Какова высота панели навигации в iOS 7?
Я создал простое приложение iOS 7 с использованием шаблона основных данных по умолчанию.
В методе MasterViewController.m
, viewDidAppear
я записал для
self.navigationController.navigationBar.frame.size.height
self.navigationController.navigationBar.frame.origin.y
и получили соответственно 44 и 20. Это кажется странным, потому что из того, что я читал, панель навигации в iOS 7 должна быть 64-точечной высоты и начинаться с 0-й точки, чтобы она находилась под строкой состояния. То, что я прочитал,
1) Руководство по переходу на iOS 7 UI
Поскольку строка состояния прозрачна, просмотр позади нее показывает через
2) Использование фонового изображения в панели навигации
Если ваше приложение использует пользовательский образ в качестве фона панели, youll необходимо обеспечить "более высокое" изображение, чтобы оно расширялось за статус бар. Высота навигационной панели изменяется с 44 точек (88 пикселей) до 64 точек (128 пикселей).
Ответы
Ответ 1
Я получил этот ответ из книги "Программирование iOS 7, раздел" Положение бара и показатели бара "
Если панель навигации или панель инструментов - или панель поиска (обсуждается ранее в эта глава) - занять верхнюю часть экрана, iOS 7 что его высота должна быть увеличена, чтобы прозрачная строка состояния. Чтобы сделать это возможным, iOS 7 представляет понятие позиции в баре.
UIBarPositionTopAttached
Указывает, что панель находится в верхней части экрана, а также ее содержащий вид. Бары с этой позицией рисуют свой фон расширенные вверх, позволяя их фоновое содержание показывать через строка состояния. Доступно в iOS 7.0 и более поздних версиях.
Ответ 2
Существует разница между навигационной панелью и строкой состояния. Запутанная часть состоит в том, что она выглядит как одна сплошная функция в верхней части экрана, но области можно фактически разделить на два разных вида; панель состояния и панель навигации. Строка состояния охватывает от y = 0 до y = 20 точек, а панель навигации охватывает от y = 20 до y = 64 точки. Таким образом, панель навигации (в которой находится заголовок страницы и кнопки навигации) имеет высоту 44 точки, но строка состояния и панель навигации вместе имеют общую высоту 64 точки.
Вот отличный ресурс, который решает этот вопрос, а также ряд других отличительных особенностей iOS7:
http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/
Ответ 3
Высота состояния может варьироваться. Обычно это 20 пикселей. Однако на iPhone, когда есть телефонный звонок, тогда он составляет 40 пикселей.
extension UIViewController {
/// Returns 64 when normal
///
/// Only on iPhone: Returns 84 when In-Call status bar is visible
var topBarHeight: CGFloat {
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let navigationBarHeight = self.navigationController?.navigationBar.frame.height ?? 0
return statusBarHeight + navigationBarHeight
}
}