Как определить, что хост-приложение находится в режиме масштабирования или обычном режиме в iPhone 6 Plus?

Предположим, что дисплей iPhone 6 Plus находится в стандартном режиме («Настройки» > «Экран» > «Вид» > «Стандартный»), UIInputViewController inputView расширения клавиатуры возвращает разную ширину в зависимости от того, оптимизировано ли основное приложение для экрана iPhone 6/iPhone 6 Plus.

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

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


person ohho    schedule 21.11.2014    source источник


Ответы (1)


Вы можете использовать определенные макросы:

#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 plus.

person Loegic    schedule 18.09.2015