如何以编程方式检测 iPhone 6 和 6 Plus 视图模式 [重复]

Posted

技术标签:

【中文标题】如何以编程方式检测 iPhone 6 和 6 Plus 视图模式 [重复]【英文标题】:How to detect iPhone 6 & 6 Plus View Mode Programmatically [duplicate] 【发布时间】:2015-07-28 07:36:03 【问题描述】:

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

许多应用程序设计在标准模式和缩放模式下表现不同。

请参考图片:

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

【问题讨论】:

查看我对类似问题的回复here。它不使用硬编码的高度,对任何设备尺寸都更有用。 【参考方案1】:

你可以使用[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)

【讨论】:

【参考方案2】:

当我在 2 种类型的设备 iPhone 6(标准模式)和 iPhone 6(缩放模式)中安装应用程序时,我遇到了同样的问题,但后来我尝试在 iPhone 启动时捕捉它的高度和宽度。

viewDidLoadmethod 的ViewController.h 类中尝试检查控制台中的高度和宽度。

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

谢谢。

【讨论】:

以上是关于如何以编程方式检测 iPhone 6 和 6 Plus 视图模式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

故事板视图(iphone 4/5/6)影响集合单元大小的布局(以编程方式设置)

以编程方式在iPhone 6中使用指导访问

如何以编程方式检测 iOS 设备

如何以编程方式识别iphone(3g,4s,5)版本[重复]

以编程方式检测图像大小 - iPhone

如何检测用户的 iPhone 6 Plus 是不是处于标准模式或缩放模式?