2014-11-21 7 views
5

Предположим, что дисплей iPhone 6 Plus находится в стандартном режиме (Настройки> Дисплей> Вид> Стандарт), UIInputViewControllerinputView расширения клавиатуры с разной шириной зависит от того, оптимизировано ли приложение-хост для экрана iPhone 6/iPhone 6 Plus.Как обнаружить хост-приложение в режиме масштабирования или в обычном режиме в iPhone 6 Plus?

Например, встроенное приложение Notes возвращает ширину как 414 точек (без увеличения), где приложение LINE (по версии v.7.7.2) возвращает 320 точек (увеличено).

Как расширение клавиатуры определяет ширину окна приложения-хозяина (скажем, в viewDidLoad, до viewDidiLoad)?

ответ

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) 

Или [UIScreen mainScreen].nativeScale ведьма будет дает вам 2.6f если нормально, и если 2.8f увеличенной на iPhone 6 плюс