2014-11-21 18 views
5

Bir klavye uzantısının UIInputViewControllerinputView konak uygulaması iPhone 6/iPhone 6 Plus ekran için optimize edilmiş olmamasına bağlıdır farklı genişlikleri döndürür iPhone 6 Plus ekran standart modda (Ayarlar> Ekran> Görünüm> Standart) olduğunu varsayalım.Nasıl konak uygulaması iPhone 6 Plus Zoom modu veya Normal modda olduğunu tespit etmek için?

Örneğin, dahili Notlar uygulaması döner (v4.7.2 itibariyle) HAT uygulaması 320 noktaları (büyütülmüş) döndürür 414 nokta (değil büyütülmüş) olarak genişliği.

Klavye uzantısı, ana bilgisayar uygulama penceresinin genişliğini nasıl belirler (örneğin, viewDidLoad, viewDidiLoad'dan önce)?

cevap

0

Sen tanımlanmış makroları kullanabilirsiniz: iPhone 6 artı

üzerinde uzaklaştırdınız eğer

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

Ya [UIScreen mainScreen].nativeScale cadı irade size 2.6f normale eğer ve 2.8f verir

İlgili konular