stackoverflow.com/a/51511947/2057171

риложение iOS использует настраиваемую высоту дляUINavigationBar что приводит к некоторым проблемам на новом iPhone X.

Кто-то уже знает, какнадежный определить программно (в Objective-C), работает ли приложение на iPhone X?

РЕДАКТИРОВАТЬ:

Конечно, проверка размера экрана возможна, однако, мне интересно, есть ли какой-нибудь метод «встроенного» типаTARGET_OS_IPHONE обнаружить iOS ...

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    if (screenSize.height == 812)
        NSLog(@"iPhone X");
}

РЕДАКТИРОВАТЬ 2:

Я не думаю, что мой вопрос является дубликатом связанного вопроса. Конечно, существуют методы для «измерения» различных свойств текущего устройства и использования результатов для определения того, какое устройство используется. Тем не менее, это был не фактический вопрос моего вопроса, который я попытался подчеркнуть в своем первом редактировании.

Актуальный вопрос:«Можно ли напрямую определить, является ли текущее устройство iPhone X (например, с помощью некоторой функции SDK), или мне нужно использовать косвенные измерения»?

Из ответов, данных до сих пор, я предполагаю, что ответ «Нет, прямых методов нет. Измерения - это путь».

 Andrei Herford13 сент. 2017 г., 10:24
Да, как я уже упоминал в моем редактировании, можно проверить размер экрана. Однако вопрос заключается в том, существует ли «прямой» метод запроса типа устройства, а не «косвенные» измерения ...
 Albert Renshaw25 июл. 2018 г., 08:21
ВАЖНО, будущие разработчики: не определяйте это, используя высоту экрана, как предлагают современные топовые решения, это плохо, поскольку это может привести к ложным срабатываниям для будущих устройств; не будет работать, если UIWindow еще не визуализировалось (как в ваших функциях инициализации AppDelegate), не будет работать в ландшафтных приложениях и может не работать на симуляторе, если установлен масштаб. НИКОГДА не используйте магические числа для подобных вещей! Вы можете проверить аппаратные флаги, чтобы гарантировать успех, как я сделал здесь:stackoverflow.com/a/51511947/2057171
 El Tomato13 сент. 2017 г., 10:21
iPhone X имеет разрешение экрана, отличное от других.
 Itachi20 сент. 2017 г., 10:00
Автор просто хочет получить тип устройства, а не разрешение экрана.Почему бы не проверить имя машины напрямую? @lubilis прав.
 holex17 нояб. 2017 г., 13:03
почему бы вам просто не использовать руководства по безопасным зонам, как это рекомендует Apple?

Ответы на вопрос(0)

Ваш ответ на вопрос