Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@hituziando

iPhoneかiPadかを判別するときの注意点

More than 3 years have passed since last update.

UIDeviceクラスを使った判定

コードでiPhoneかiPadかを判別する時は、UIDeviceクラスを使って次のようにします。

以下はマクロを定義しています。

#define IS_PAD      ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
#define IS_PHONE    ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)

このマクロは以下のように使えます。

...

if (IS_PAD) {
  NSLog(@"iPadです");
} else {
  NSLog(@"iPadではありません");
}

...

注意したいのは、この判定が意味を成すのは、ユニバーサルアプリの時のみです。
iPhoneにしか対応していないアプリをiPadで起動した場合、IS_PADNOとなります。

追記) [[UIDevice currentDevice] model]を参照することで、ユニバーサルアプリかどうかに関わらず、判定できます(下記コメント欄参照)。

UIScreenクラスを使った判定

追記) 画面サイズで判定した場合はどうなるか、検証してみました。

以下のマクロを定義します。

#define IS_IPAD         (MIN([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) == 768)
#define IS_IPAD_12_9    (MIN([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) == 1024)

2016/8/17時点で、発売されているiPad,Mini,Air,Proは768x1024または1024x1366の2パターンのみのようです。
参考: iPhone/iPad解像度(画面サイズ)早見表

以下のようにiPadかを判別します。

...

if (IS_IPAD || IS_IPAD_12_9) {
  NSLog(@"iPadです");
} else {
  NSLog(@"iPadではありません");
}

...

この判定方法でも、意味を成すのは、ユニバーサルアプリの時のみでした。
つまり、iPhoneにしか対応していないアプリをiPadで起動した場合、IS_IPADおよびIS_IPAD_12_9NOとなります。

#[UIScreen mainScreen].boundsが変わっちゃ他のところで影響出そうだものね

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hituziando
Android/iOS/macOS app developer, Front-end engineer, Rails engineer

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?