В версиях 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
ответ
Я смог обнаружить устройства, используя следующие макросы. Это будет полезно, если вы хотите идентифицировать устройство, выполнить некоторое обновление представлений (например, обновлять фреймы при изменении ориентации). Если вы действительно хотите модель устройства/сделать, используйте эту ссылку (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)
Вы можете проверить, если
[UIScreen mainScreen].bounds.size.height == 568.0
и [UIScreen mainScreen].scale
для идентификации iPhone 6 и 6+
Обратите внимание, что это не будет работать, если приложение работает в режиме «увеличенному».
В этом случае iPhone 6 и 6+ выдаст масштаб 2.0
Не могли бы вы объяснить, какой масштабный режим для iPhone 6 и 6+? Пожалуйста, дайте основную идею. Я новичок в этом. –
@RashmiRanjanmallick, если вы не укажете Splash-изображения для iPhone 6/6+ (например, в ImageAssets), приложение начнет работать в увеличенном режиме, а границы экрана будут 320 x 568 на обоих iPhone 6, 6+ – l0gg3r
Спасибо много друг !!! Я действительно не знаю, какой размер заставки следует добавить в поддержку iPhone 6 и 6+. Любая помощь по этому поводу? –
это не сработает, если приложение находится в режиме «масштабирования» (заставка не отображается для 6 или 6+) – l0gg3r
@ l0gg3r: Вы правы, в увеличенном режиме это не удастся. В увеличенном режиме Проверка iPhone5 будет верна и для iPhone6 и iPhone6 +. Поэтому я также обновлю ответ, чтобы это было уделено. –
@ l0gg3r: Я сказал, что он работает для меня, потому что мое требование - идентифицировать устройство, чтобы обновить фреймы представления при обновлении ориентации. Мое приложение поддерживает новые разрешения, поэтому не беспокойтесь о масштабированном режиме. Также, если приложение работает в увеличенном режиме, нам не нужно беспокоиться об этом; система будет обрабатывать этот случай. Установите рамки представления для разрешения iPhone 5, и система будет масштабировать/масштабировать его для нового разрешения. –