Как обнаружить приложение моего iPhone, запускается на iPad

StackOverflow https://stackoverflow.com/questions/4465832

  •  11-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

Если вы хотите создать пользовательский код (наиболее вероятные методы, связанные с пользовательским интерфейсом) только для 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 метод

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

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone &&
    [[[UIDevice currentDevice] model] hasPrefix:@"iPad"]) {
    // This app is an iPhone app running on an iPad
}

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

Например, что -то вроде: nsstring *System = [[uidevice currentDevice] SystemName];

Затем, используя [System IsecalltoString:@"iPad"], будь то iPad или нет.

Uidevice - очень хороший класс, в нем также есть такие вещи, как многозадачность, Systemversion и т. Д.

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

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

Если target_iphone_simulator

NSString *Hello = @"Hello, ios simulator!";

еще

NSString *Hello = @"Привет, устройство iOS!";

эндиф

связь Apple Doc

о

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

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

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

#if TARGET_IPHONE_SIMULATOR
#define URL @"http://192.x.x.x/request"
#else
#define URL @"http://example.com/request"
#endif
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top