2015-06-28 5 views
0

Приложение, предназначенное для устройства с разрешением 480x960 пикселей, выполняется на устройстве 480x1136. Во время работы на устройстве 480x1136 мне нужно иметь возможность обнаруживать реальное разрешение. К сожалению, вместо того, чтобы разрешение устройства («480x1136»), я получаю разрешение приложения (== '480x960'), следовательно, [[UIScreen mainScreen] bounds].size * [[UIScreen mainScreen] scale]'480x960' вывел следующую вместо ожидаемого '480x1136'Получение разрешения дисплея iOS

Как я могу разрешить реальное физическое устройство разрешение?

+0

Какое устройство вы протестировали его на? Физическое устройство или симулятор? – nhgrif

+0

Это нормально, поскольку в отношении приложения он работает на устройстве с разрешением 480x960. Почему вам нужно получить фактическое разрешение устройства? –

+0

Физическое устройство: приложение, предназначенное для работы на 3,5-дюймовом устройстве, выполняется на 4-дюймовом устройстве (iPod Touch 5,1). – NadavRub

ответ

0
//Get device screen resolution for this specific case  

CGRect boundsOfScreen=[[UIScreen mainScreen] bounds]; 

     if (boundsOfScreen.size.width == 480 && boundsOfScreen.size.height == 960) { 
      //iPod Touch 3.5-inch 
     } 
     else if (boundsOfScreen.size.width == 480 && boundsOfScreen.size.height == 1136) { 
      //iPod Touch 4-inch 
     } 
+0

Используя приведенное выше , Как бы вы различали, например. iPod Touch 3,5-дюймовый (480x960) и iPod Touch 4-дюймовый (480x1136)? – NadavRub

+0

UR, разрешающий тип устройства с использованием его ширины, для устройств 3,5 и 4 дюйма ширина одинакова, а высота отличается, ИМО - лучший способ разрешить тип устройства - использовать то, что описано в этой ссылке: http: // stackoverflow .com/questions/11197509/ios-how-to-get-device-make-and-model, однако я хотел бы изменить разрешение непосредственно без сохранения строгого кодированного типа отображения таблицы до разрешения – NadavRub

+0

независимо от того, что выше будет возвращено разрешение приложения, а не разрешение физического устройства – NadavRub

0

Это некрасиво, но это единственное решение, которое я нашел, чтобы решить реальную физическую разрешение основного дисплея (Независимый выполняющегося приложения):

#import <sys/utsname.h> 

bool getDeviceNativeResolution(CGSize& res) { 
    utsname si; 
    uname(&si); 

    if((0 == strncmp(si.machine, "iPod7", 5)) || (0 == strncmp(si.machine, "iPhone7", 7))) 
     res = CGSizeMake(1080, 1920); 
    else if((0 == strncmp(si.machine, "iPod6", 5)) || (0 == strncmp(si.machine, "iPhone6", 7))) 
     res = CGSizeMake(750, 1334); 
    else if((0 == strncmp(si.machine, "iPod5", 5)) || (0 == strncmp(si.machine, "iPhone5", 7))) 
     res = CGSizeMake(640, 1136); 
    else if((0 == strncmp(si.machine, "iPod4", 5)) || (0 == strncmp(si.machine, "iPhone4", 7))) 
     res = CGSizeMake(640, 960); 
    else 
     return false; 

    return true; 
} 
Смежные вопросы