@tylerSF пожалуйста

от вопрос уже есть ответ здесь:

Определить, является ли устройство iPhone X 34 ответа

Я уверен, что есть лучший, более правильный способ сделать это. Но сейчас я использую UIScreen.main.bounds, чтобы определить, имею ли я дело с iPhone X (высотой 812) или нет. Это конкретное приложение только пейзаж, кстати. Вот что я имею в этой функции, где я создаю слайды для просмотра слайдов:

func setupSlideViews(slideView: [SlideView]) {
    let screenSize = UIScreen.main.bounds

    var frame: CGRect!
    if screenSize.width == 812 {
        frame = scrollView.frame
    } else {
        frame = view.frame
    }
    scrollView.frame = frame
    scrollView.contentSize = CGSize(width: frame.width * CGFloat(slideViews.count), height: frame.height)

    for (i, slideView) in slideViews.enumerated() {
        slideView.frame = CGRect(x: frame.width * CGFloat(i), y: 0, width: frame.width, height: frame.height)
        scrollView.addSubview(slideView)
    }
}

А как проверить модель?

 ale_stro12 нояб. 2018 г., 14:01
Взгляните, пожалуйстаstackoverflow.com/a/52821290/3472073

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

Решение Вопроса

является ли устройство iPhoneX, не используйтеbounds, это зависит от ориентации устройства. Так что, если пользователь откроет ваше приложение в портретном режиме, оно потерпит неудачу. Вы можете использовать свойство устройстваnativeBounds который не меняется при вращении.

В iOS 8 и более поздних версиях свойство bounds экрана учитывает ориентацию интерфейса экрана. Такое поведение означает, что границы для устройства в книжной ориентации могут не совпадать с границами для устройства в альбомной ориентации. Приложения, использующие размеры экрана, могут использовать объект в свойстве fixedCoordinateSpace в качестве фиксированной точки отсчета для любых вычислений, которые они должны выполнить. (До iOS 8 прямоугольник границ экрана всегда отражал размеры экрана относительно книжной ориентации. Поворот устройства в горизонтальную или перевернутую ориентацию не изменил границы.)

extension UIDevice {
    var iPhoneX: Bool {
        return UIScreen.main.nativeBounds.height == 2436
    }
}

использование

if UIDevice.current.iPhoneX { 
    print("This device is a iPhoneX")
}
 tylerSF06 янв. 2018 г., 16:31
просто и эффективно! Спасибо
 Leo Dabus06 янв. 2018 г., 16:32
@tylerSF пожалуйста

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