如何检测iPhone 6& 6 Plus以编程方式查看模式

时间:2015-05-16 12:01:15

标签: ios iphone-6 iphone-6-plus

有没有办法以编程方式识别查看模式(在设置>显示和亮度)?

许多应用程序设计在标准模式和缩放模式下的行为都不同。

请参考图片:

enter image description here

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分:21)

如果正常,你可以使用[UIScreen mainScreen].nativeScale女巫将2.6f,如果在iPhone 6 plus上放大2.8f,或者使用已定义的宏:

#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)

答案 1 :(得分:0)

当我在两种类型的设备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);

感谢。