Как определить режим просмотра iPhone 6 и 6 Plus Programmatically

Есть ли способ идентифицировать режим просмотра (в настройках > Отображение и яркость) программно?

Многие дизайны приложений ведут себя по-разному в стандартном режиме и в режиме Zoomed.

Пожалуйста, обратитесь к изображению:

enter image description here

Любая помощь будет оценена по достоинству.:)

Ответ 1

Вы можете использовать либо [UIScreen mainScreen].nativeScale, ведьма даст вам 2.6f, если это нормально, и 2.8f, если увеличено на iPhone 6 плюс или определенные макросы:

#define IS_OS_8_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && ([[UIScreen mainScreen] bounds].size.height == 568.0) && ((IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) || !IS_OS_8_OR_LATER))
#define IS_STANDARD_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0  && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale)
#define IS_ZOOMED_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale > [UIScreen mainScreen].scale)
#define IS_STANDARD_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
#define IS_ZOOMED_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale < [UIScreen mainScreen].scale)

Ответ 2

Да, вы можете сделать это: -

[UIScreen mainScreen].currentMode  

для обнаружения режима стандартного режима и масштабирования.

Для получения более подробной информации вы проверяете эту ссылку .

Ответ 3

Я столкнулся с такой же проблемой, когда устанавливаю приложение в двух типах устройств iPhone 6 (стандартный режим) и iPhone 6 (режим масштабирования), но позже я пытаюсь поймать высоту и ширину iPhone при его запуске.

в вашем классе ViewController.h в viewDidLoad попытайтесь проверить высоту и ширину в консоли.

NSLog(@"width %f, height %f",self.view.frame.size.width,self.view.frame.size.height);

Проверяя это, вы можете получить разницу между стандартным и масштабным режимами.

В ответе Vizllx вы также можете проверить, как показано ниже, что я пробовал.

UIScreen *MainScreen = [UIScreen mainScreen];
UIScreenMode *ScreenMode = [MainScreen currentMode];
CGSize Size = [ScreenMode size];
NSLog(@"width %f, height %f",Size.width,Size.height);

Спасибо.