Как определить режим просмотра 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);
Спасибо.