Как определить, что приложение для iPhone запущено на iPad - PullRequest
2 голосов
/ 17 декабря 2010

У меня есть приложение opengl, которое лучше рендерится в режиме RetinaDisplay (двойной масштабный коэффициент), и я заметил, что iPad эмулирует приложение iPhone с экраном низкого разрешения (нормальный масштабный коэффициент).

Я хочу удвоитьмасштабный коэффициент, когда мое приложение для iPhone запускается на iPad, чтобы получить выгоду от графики Retina Display.Но кажется, что iPad действительно хорошо подделывает себя как iPhone (что было бы идеально, если бы это был только Retina Display ...)

Когда я нажимаю двойную шкалу, он работает очень хорошо (по крайней мере, в симуляторе, У меня нет iPad для тестирования).

Поэтому мне нужен способ узнать, запущен ли я на iPad, несмотря на то, что многие говорят мне, что это старый iPhone.

Илиможет быть, я не должен пытаться это сделать?

Ответы [ 6 ]

20 голосов
/ 17 декабря 2010

Если вы хотите создать собственный код (скорее всего, методы, связанные с пользовательским интерфейсом) только для iPad, то вы можете использовать (как Apple) метод UI_USER_INTERFACE_IDIOM (), который существует в iOS 3.2 и более поздних версиях

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    // The device is an iPad running iPhone 3.2 or later.
}
else
{
    // The device is an iPhone or iPod touch.

}

Вы можете прочитать больше здесь http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BuildTimeConfiguration/BuildTimeConfiguration.html

Это рекомендуемый Apple метод

19 голосов
/ 14 февраля 2013

Если приложение представляет собой приложение iPhone, работающее в режиме эмулятора на iPad, оно будет иметь пользовательский интерфейс телефона, но тип модели iPad. Вы можете проверить это с помощью следующего кода:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone &&
    [[[UIDevice currentDevice] model] hasPrefix:@"iPad"]) {
    // This app is an iPhone app running on an iPad
}
1 голос
/ 17 декабря 2010

Посмотрите в документации, UIDevice:

Например, что-то вроде: NSString * system = [[UIDevice currentDevice] systemName];

Затем с помощью [system isEqualToString: @ "iPad"], будь то ipad или нет.

UIDevice - очень хороший класс, он также имеет такие вещи, как multiTaskingSupported, systemVersion и т. Д. Должен любить UIKit;)

0 голосов
/ 06 января 2011

about

Это фактически только скажет вам, запущено ли приложение в моделируемой среде или на реальном устройстве, и не влияет на то, является ли платформа iPad или iPhone.

Фактически он говорит во время компиляции цель платформы, для которой вы компилируете, поэтому перед запуском вы знаете и делаете все необходимое, чтобы позаботиться о чем-то конкретном.

Например, яУ меня есть разные URL для разработки (запуска на симуляторе) и для производственного использования, поэтому я делаю что-то вроде

#if TARGET_IPHONE_SIMULATOR
#define URL @"http://192.x.x.x/request"
#else
#define URL @"http://example.com/request"
#endif
0 голосов
/ 17 декабря 2010

Я думаю, что это:

// Set hello to "Hello, <device or simulator>"!

если TARGET_IPHONE_SIMULATOR

NSString * hello = @ "Здравствуйте, iOS Simulator!";

еще

NSString * hello = @ "Здравствуйте, устройство iOS!";

ENDIF

ссылка Apple Doc

0 голосов
/ 17 декабря 2010

вы не сможете заметить разницу, если это приложение для iPhone, то насколько оно может сказать, что оно работает на iPhone. если вы хотите настроить таргетинг на iPad, вам нужно создать его для iPad.

...