Щоб надійно виявити дисплей Retina на всіх пристроях iOS, потрібно перевірити, чи пристрій працює під iOS4 + та чи [UIScreen mainScreen].scale
властивість дорівнює 2,0. Ви НЕ МОЖЕТЕ припустити, що пристрій працює під iOS4 +, якщо scale
властивість існує, оскільки iPad 3.2 також містить цю властивість.
На iPad, який працює під управлінням iOS3.2, масштаб повертає 1,0 в режимі 1x, а 2,0 в режимі 2x - хоча ми знаємо, що пристрій не містить дисплея Retina. Apple змінила цю поведінку в iOS4.2 для iPad: вона повертає 1,0 в обох режимах 1x та 2x. Ви можете перевірити це самостійно в тренажері.
Я перевіряю -displayLinkWithTarget:selector:
метод на головному екрані, який існує в iOS4.x, але не iOS3.2, а потім перевіряю масштаб екрану:
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
// Retina display
} else {
// non-Retina display
}