2014-11-21 18 views
5

Supporre che lo schermo iPhone 6 Plus sia in modalità standard (Impostazioni> Display> Visualizza> Standard), lo UIInputViewControllerinputView di un'estensione della tastiera restituisce larghezze diverse a seconda che l'app host sia ottimizzata per lo schermo dell'iPhone 6/iPhone 6 Plus.Come rilevare l'app host in modalità Zoom o Normale in iPhone 6 Plus?

Ad esempio, l'app Note incorporata restituisce la larghezza come 414 punti (non ingrandita), in cui l'app LINE (dalla v4.7.2) restituisce 320 punti (ingranditi).

Come può un'estensione della tastiera determinare la larghezza della finestra dell'app host (ad esempio, in viewDidLoad, prima di viewDidiLoad)?

risposta

0

È possibile utilizzare le macro definite:

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

O [UIScreen mainScreen].nativeScale strega ti dà 2.6f se normale, e 2.8f se zoom su iPhone 6 Plus