Дополнительное нижнее пространство / дополнение на iPhone X?

На iPhone X в портретном режиме, если вы установите нижнее ограничение в безопасную область на 0, вы получите дополнительное пространство в нижней части экрана. Как вы программно получаете высоту этого дополнительного дополнения?

Мне удалось вручную определить высоту этого дополнения, которое составляет 34, и вот как мне удалось реализовать его с обнаружением iPhone X:

Swift 4.0 и Xcode 9.0

if UIDevice().userInterfaceIdiom == .phone { switch UIScreen.main.nativeBounds.height { case 2436: //iPhone X self.keyboardInAppOffset.constant = -34.0 default: self.keyboardInAppOffset.constant = 0 } } 

Есть ли более чистый способ определить высоту этого дополнения?

3 Solutions collect form web for “Дополнительное нижнее пространство / дополнение на iPhone X?”

В iOS 11 представления имеют свойство safeAreaInsets . Если вы получаете bottom свойство этих вложений, вы можете получить высоту нижней прокладки в то время как на iPhone X:

 if #available(iOS 11.0, *) { let bottomPadding = view.safeAreaInsets.bottom // ... } 

(аналогично верхнему отступу со строкой состояния)

В Objective-C

 if (@available(iOS 11.0, *)) { UIWindow *window = UIApplication.sharedApplication.keyWindow; CGFloat bottomPadding = window.safeAreaInsets.bottom; } 

Если вдруг у вас нет вида, например CollectionViewLayout, вы также можете получить его из окна:

 private static var itemHeight: CGFloat { guard #available(iOS 11.0, *), let window = UIApplication.shared.keyWindow else { return Constants.itemHeight } return Constants.itemHeight - window.safeAreaInsets.bottom } 
  • Переключение ограничения при определенном условии
  • Как перейти от UIAlertView (устаревший в iOS8)
  • iCloud Keychain уведомляет об обновлении
  • Swift: имя селектора, найденное в текущих регистрах аргументов: release
  • Сохранение панели вкладок в режиме просмотра после сеанса?
  • Возможно ли, чтобы fatalError в требуемом init? (Coder aDecoder: NSCoder), когда я не использую раскадровки?
  • Ошибка Swift JSON, не может отличать значение типа «__NSArrayM» (0x507b58) с «NSDictionary» (0x507d74)
  • Непризнанный селектор UITapGestureRecognizer, отправленный в экземпляр
  • Как скрыть предупреждения в Xcode 7
  • (быстрый) способ отладки CrashIfClientProvidedBogusAudioBufferList, когда значение атрибута AudioStreamPacketDescription равно нулю?
  • Как обновить определенное значение дочернего элемента в Firebase DB
  • Interesting Posts

    Сила в нижнем регистре – ios swift

    Проблемы с производительностью контроллера табличного представления iOS 8

    AFNetworking: доступ к обработчикам завершения при повторной операции

    iOS 10 AVPlayer не будет передавать видео с URL без расширения и с видео / mp4 в качестве типа контента

    Как я могу сделать PDF-файл, используя base64 string? стриж

    Пользовательский UITableViewCell как пузырь

    Самостоятельные ячейки, не работающие в Swift

    быстро получить текст WKInterfaceLabel

    Когда вызывается awakeFromNib?

    Не удалось обновить ячейку новыми данными как (cell! = Nil)

    iOS Swift – воспроизведение видео с YouTube с полноэкранным видеопроигрывателем

    Цвет URL-адреса браузера Safari View / текстовое поле (текстовое поле)

    Динамический первый контроллер просмотра в iOS

    AVAudioPlayer – воспроизведение нескольких аудиофайлов в последовательности

    Перенос событий в родительский вид (Titanium Studio, IPhone)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.