Я хотел бы узнать точную высоту верхней панели iPhone X. Не могли бы вы упомянуть строку состояния и высоту навигационной панели iPhone X. Пожалуйста, помогите мне.
Какова максимальная высота экрана iPhone X?
Ответ 1
Дисплей на iPhone X, однако, на 145 пт выше, чем 4,7 ", что дает примерно 20% дополнительного вертикального пространства для контента.
для получения дополнительной информации вы получите HIG для iphone X из яблочных документов и подробное описание в здесь1 и здесь2
высота строки состояния
ранее 20pt, теперь 44pt
Из-за датчиков в верхней части дисплея новая строка состояния разделена на 2 части. Если ваш пользовательский интерфейс делает что-то особенное с этим пространством (ранее 20pt, теперь 44pt), потому что оно будет выше на iPhone X. Убедитесь, что его можно динамически изменять по высоте. Замечательно, что высота не изменится, если пользователь звонит по телефону или использует навигационное приложение, что ранее было на других iPhone.
портрет
Высота навигационной панели как обычно 88 и время большого заголовка 140
- Стандартный заголовок - 44pt (88pt со строкой состояния)
- Большое название - 140pt
- нижняя полоса - 34pt
Пейзаж
- Стандартный заголовок - 32pt
- нижний бар - 21pt
Ответ 2
Панель навигации, как обычно, 44pt (когда нет больших заголовков), а строка состояния увеличилась с 20pt до 44pt. Вот что вы можете ввести в отладчике, чтобы проверить это:
Ответ 3
Вы можете программно получить высоту панели навигации, используя safeAreaInsets
на view
в контроллере вида:
let navBarHeight = view.safeAreaInsets.top
Это будет учитывать, будет ли это большая панель навигации заголовка или нет, а также будет ли прикреплена к ней панель поиска.
См. документацию safeAreaInsets
для получения дополнительной информации.
Ответ 4
Вы можете просто получить его следующим образом (Swift 3):
let barHeight = navigationController?.navigationBar.frame.maxY
Чтобы получить правильное значение, убедитесь, что вы вызываете его после установки prefersLargeTitles
navigationController?.navigationBar.prefersLargeTitles = false
Ответ 5
Вы можете использовать свойство панели навигации .frame, чтобы определить общую высоту области верхнего бара:
ObjC:
CGRect navbarFrame = self.navigationController.navigationBar.frame;
float topWidth = navbarFrame.size.width;
float topHeight = navbarFrame.size.height + navbarFrame.origin.y;
Я предполагаю, что это немного обманщик, но добавление высоты навигатора с его y-началом, похоже, дает правильную общую высоту, независимо от устройства.
Ответ 6
В Apple Docs нет спецификации
Согласно Джефф Хакворт его 88
Типы заголовков навигации:
- Стандартное название
- Большой заголовок
Увеличение панели навигации в iOS 11
navigationController?.navigationBar.prefersLargeTitles = true
Ответ 7
Используйте его, если хотите узнать, где нужно начинать контент
extension UIViewController {
var navigationBarbarContentStart: CGFloat {
return self.navigationBarTopOffset + self.navigationBarHeight
}
var navigationBarTopOffset: CGFloat {
return self.navigationController?.navigationBar.frame.origin.y ?? 0
}
var navigationBarHeight: CGFloat {
return self.navigationController?.navigationBar.frame.height ?? 0
}
}