Что такое код, чтобы определить, работает ли приложение iOS на iPhone, iPhone Retina или iPad?

что такое код для определения того, работает ли приложение iOS на iPhone, iPhone Retina или iPad?

Фон:

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

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

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

Ответ 1

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

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

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

Ответ 2

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

+(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 a 3GS or below, or an iPhone 4.
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
        return YES;
    else
        return NO;
}

Ответ 3

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

 if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)     
 {
        // Ipad
 }
 else 
 {
       // Iphone
 }

Ответ 4

см. @interface UIDevice

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

Ответ 5

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

bool runningOniPhone;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
    runningOniPhone = TRUE;
} else {
    runningOniPhone = FALSE;
}