Высота строки состояния iPhone X

Я разработал приложение без autoLayout или interface-builder, все по коду. Он работает нормально во всех iPhones, кроме iPhone X, где верхняя полоса остается под новой черной штукой посередине.

Можно получить эту высоту с помощью кода, поэтому я могу сдвинуть свой Navigationbar на эту высоту вниз, и все работает нормально?

Решения, которые я вижу, используют автоматическую верстку.

Я просто хочу получить расстояние, чтобы сместить его вниз ..


person F79    schedule 16.10.2017    source источник


Ответы (2)


В моем приложении Swift я получаю frame строки состояния с помощью

Свифт: UIApplication.shared.statusBarFrame

Цель-C: [UIApplication sharedApplication].statusBarFrame

Это CGRect, так что вы можете получить его высоту, выполнив size.height. Итак, в целом вы можете сделать это в Objective-C:

[UIApplication sharedApplication].statusBarFrame.size.height
person Michael Hulet    schedule 16.10.2017

Вы всегда можете получить высоту строки состояния со скрытой строкой состояния или без нее:

UIApplication.shared.keyWindow!.safeAreaInsets.top

и индикатор домашнего экрана

UIApplication.shared.keyWindow!.safeAreaInsets.bottom

Если это ландшафт, значение изменится

и safeAreaLayoutGuide тоже есть

person Puttin    schedule 07.12.2017
comment
Обратите внимание, что вставки безопасной области включают в себя такие элементы, как панели инструментов и панели навигации. developer.apple.com/documentation/uikit/uiview/ - person dwsolberg; 12.12.2018
comment
SafeAreaInsets доступен только на iOS 11.0 или новее. - person user1872384; 15.03.2019