Help us understand the problem. What is going on with this article?

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が変わっちゃ他のところで影響出そうだものね

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした