在iPhone 6 Plus中如何检测主机应用程序处于缩放模式或普通模式?

ohh*_*hho 5 ios ios8 iphone-6 iphone-6-plus ios-keyboard-extension

假设iPhone 6 Plus显示器处于标准模式(设置>显示>视图>标准),UIInputViewController inputView键盘扩展的返回宽度取决于主机应用程序是否针对iPhone 6/iPhone 6 Plus屏幕进行了优化.

例如,内置的Notes应用程序返回宽度为414点(未缩放),其中LINE应用程序(从v4.7.2开始)返回320点(缩放).

键盘扩展如何确定主机应用程序窗口的宽度(例如viewDidLoad,之前,之前viewDidiLoad)?

Loe*_*gic 0

您可以使用定义的宏:

#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)
Run Code Online (Sandbox Code Playgroud)

或者如果正常的话,如果在 iPhone 6 plus 上放大的话,[UIScreen mainScreen].nativeScale女巫会给你2.6f2.8f