Обнаружение Retina Display - PullRequest
       19

Обнаружение Retina Display

221 голосов
/ 17 августа 2010

Предоставляет ли iOS SDK простой способ проверить, есть ли у currentDevice дисплей с высоким разрешением (сетчатка)?

Лучший способ сделать это сейчас:

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {
         // RETINA DISPLAY
    }

Ответы [ 14 ]

1 голос
/ 05 июля 2013

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

@interface UIScreen (RetinaCheck)
+ (BOOL)retinaScreen;
@end

static BOOL isRetinaScreen = NO;
static BOOL didRetinaCheck = NO;

@implementation UIScreen (RetinaCheck)
+ (BOOL)retinaScreen
{
    if (!didRetinaCheck) {
        isRetinaScreen = ([[self mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
                          ([self mainScreen].scale == 2.0));
        didRetinaCheck = YES;
    }
    return isRetinaScreen;
}
@end

Может быть кому-то полезно.

0 голосов
/ 12 мая 2016

Это сработало для меня

if((UIScreen .mainScreen().scale) < 2.0)
{
    NSLog("no retina");
}
else
{
    NSLog("retina");
}
0 голосов
/ 12 апреля 2016

Модифицированная версия primulaveris для простоты наиболее распространенных случаев использования.Я на Swift 2.2, но это не должно иметь значения.

extension UIScreen {
    static var isRetina: Bool {
        return screenScale >= 2.0
    }

    static var isRetinaHD: Bool {
        return screenScale >= 3.0
    }

    static var screenScale:CGFloat {
        return UIScreen.mainScreen().scale
    }
}

Тогда просто используйте их как это

0 голосов
/ 08 января 2014

попробуйте

if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
    ([UIScreen mainScreen].scale == 2.0))
{
    // Retina display
    NSLog(@"---------------Retina display");
} else {
    // non-Retina display
    NSLog(@"---------------non-Retina display");
}
...