2014-11-11 12 views
0

В версиях iOS до iOS 8 для проверки того, является ли устройство iPhone 5/iPhone 5s, проверка [UIScreen mainScreen] .bounds.size.height == 568.0 было достаточно. Но в iOS 8.x эта проверка может завершиться неудачей, поскольку границы теперь зависят от ориентации. Мне нужно решение для идентификации устройств iPhone 5, 6 и 6+ без проверки версии iOS.iOS 8.x альтернатива обнаружению iPhone 5s, используя [UIScreen mainScreen] .bounds.size.height == 568.0

ответ

0

Я смог обнаружить устройства, используя следующие макросы. Это будет полезно, если вы хотите идентифицировать устройство, выполнить некоторое обновление представлений (например, обновлять фреймы при изменении ориентации). Если вы действительно хотите модель устройства/сделать, используйте эту ссылку (ios iphone get device model and make?).

#define IS_IPHONE  ((int)(MAX([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)) == 480) 
#define IS_IPHONE5  ((int)(MAX([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)) == 568) 
#define IS_IPHONE6  ((int)(MAX([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)) == 667) 
#define IS_IPHONE6PLUS ((int)(MAX([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)) == 736) 
+0

это не сработает, если приложение находится в режиме «масштабирования» (заставка не отображается для 6 или 6+) – l0gg3r

+0

@ l0gg3r: Вы правы, в увеличенном режиме это не удастся. В увеличенном режиме Проверка iPhone5 будет верна и для iPhone6 ​​и iPhone6 ​​+. Поэтому я также обновлю ответ, чтобы это было уделено. –

+0

@ l0gg3r: Я сказал, что он работает для меня, потому что мое требование - идентифицировать устройство, чтобы обновить фреймы представления при обновлении ориентации. Мое приложение поддерживает новые разрешения, поэтому не беспокойтесь о масштабированном режиме. Также, если приложение работает в увеличенном режиме, нам не нужно беспокоиться об этом; система будет обрабатывать этот случай. Установите рамки представления для разрешения iPhone 5, и система будет масштабировать/масштабировать его для нового разрешения. –

1

Вы можете проверить, если

[UIScreen mainScreen].bounds.size.height == 568.0 

и [UIScreen mainScreen].scale для идентификации iPhone 6 и 6+

Обратите внимание, что это не будет работать, если приложение работает в режиме «увеличенному».
В этом случае iPhone 6 и 6+ выдаст масштаб 2.0

+0

Не могли бы вы объяснить, какой масштабный режим для iPhone 6 и 6+? Пожалуйста, дайте основную идею. Я новичок в этом. –

+0

@RashmiRanjanmallick, если вы не укажете Splash-изображения для iPhone 6/6+ (например, в ImageAssets), приложение начнет работать в увеличенном режиме, а границы экрана будут 320 x 568 на обоих iPhone 6, 6+ – l0gg3r

+0

Спасибо много друг !!! Я действительно не знаю, какой размер заставки следует добавить в поддержку iPhone 6 и 6+. Любая помощь по этому поводу? –