Какой код определяет, работает ли приложение ios на iPhone, iPhone Retina или iPad? - PullRequest
10 голосов
/ 28 августа 2011

Какой код определяет, работает ли приложение ios на iPhone, iPhone Retina или iPad?

Фон:

  • для моего приложения iPhone, которое я определилна целевой странице / сводной странице XCode указаны конкретные изображения для: образа запуска iPhone, образа запуска дисплея Retina на iPhone, портрета iPad и пейзажа iPad.

  • на главном экране есть подпрограмма UIImageView, которую я используюдля фонового изображения - в настоящее время я задаю это в XCode (не программно), выбрав изображение, которое я использую для образа запуска iPhone.

Поэтому я спрашиваю, как определить, какоеодин я запускаю внутри так, чтобы в viewDidLoad я мог загрузить фоновое изображение соответствующего разрешения.Затем должен быть плавный переход между фоновым изображением для запуска приложения и фоном главного экрана приложения после его запуска.

Ответы [ 5 ]

18 голосов
/ 28 августа 2011

Вы можете использовать [[UIDevice currentDevice] userInterfaceIdiom], чтобы определить, работаете ли вы на iPhone / iPod touch или iPad.

Часто нет необходимости напрямую определять, используете ли вы дисплей сетчатки, потому что UIImage обрабатывает это автоматически, когда вы используете imageNamed и добавляете "@ 2x" к именам файлов изображений с высоким разрешением (см. Поддержка экранов с высоким разрешением в Руководстве по рисованию и печати для iOS).

Если вам действительно нужно знать, какое разрешение имеет экран, используйте метод UIScreen scale.

8 голосов
/ 29 августа 2011

Вот два полезных метода класса, которые я использую, что прямо отвечает на ваш вопрос - которые вы можете использовать ниже:

+(BOOL)isPad
{
#ifdef UI_USER_INTERFACE_IDIOM
    return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
#endif
    return NO;
}

+(BOOL)hasRetinaDisplay
{
    // checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4.
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
        return YES;
    else
        return NO;
}
1 голос
/ 16 марта 2015

Для быстрого решения:

 if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)     
 {
        // Ipad
 }
 else 
 {
       // Iphone
 }
0 голосов
/ 25 октября 2013

Вот код для копирования и вставки ...

bool runningOniPhone;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
    runningOniPhone = TRUE;
} else {
    runningOniPhone = FALSE;
}
0 голосов
/ 28 августа 2011

см. @interface UIDevice

, а также документация на -[UIImage scale] (хотя есть лучшие ресурсы, которые, вероятно, будут опубликованы).

...