Ответ 1
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] >= 2.0) {
// Retina
} else {
// Not Retina
}
Возможный дубликат:
Обнаружение отображения сетчатки
Как узнать, имеет ли устройство экран сетчатки или нет из объектного кода C?
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] >= 2.0) {
// Retina
} else {
// Not Retina
}
Вы можете проверить свойство scale
на [UIScreen mainScreen]
, если оно равно 2.0, которое вы используете на сетчатке, если это 1.0, вы не являетесь. Вы также можете получить масштаб из текущего контекста CoreGraphics.
Я не думаю, что вы можете определить это напрямую. Вы должны сделать это из информации о модели, которую вы можете получить из sysctlbyname (см. Страницы руководства iOS). Например:
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
вернет вам строку типа "iPhone3,1", на которой есть сетчатый экран или "iPhone 2,1", который не имеет.