2014-11-21 16 views
5

Angenommen, das iPhone 6 Plus-Display befindet sich im Standardmodus (Einstellungen> Anzeige> Ansicht> Standard), die UIInputViewControllerinputView einer Tastaturerweiterung gibt unterschiedliche Breiten zurück, je nachdem, ob die Host-App für das iPhone 6/iPhone 6 Plus optimiert ist.Wie erkennt man, ob die Host-App im iPhone 6 Plus im Zoom- oder Normalmodus ist?

Zum Beispiel gibt die integrierte Notes App eine Breite von 414 Punkten (nicht gezoomt) zurück, wobei die LINE App (ab v4.7.2) 320 Punkte (gezoomt) zurückgibt. Wie kann eine Tastaturerweiterung die Breite des Host-Anwendungsfensters bestimmen (z. B. in viewDidLoad, vor viewDidiLoad)?

Antwort

0

können Sie die definierten Makros verwenden:

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

Oder [UIScreen mainScreen].nativeScale Hexe Willen gibt Ihnen 2.6f wenn normal, und 2.8f wenn auf dem iPhone gezoomt 6 Plus