У меня есть UINavigationController
, в котором я определяю navigationBar
для всех UIViewControllers
следующим образом:
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
Я делаю это, потому что есть некоторые виды,
например : вид профиля пользователя, который должен быть прозрачным, чтобы показать backgroundImage
позади имени пользователя и изображения профиля.
Это, конечно, означает высоту navigationBar
становится равным нулю, поэтому мне нужно соответствующим образом установить все мои виды и сделать это, закрепив мои topAnchors на view.safeAreaLayoutGuide.topAnchor
.
Я продолжаю вычислять высоту navigationBar
.Мой код для получения высоты:
navBarHeight = UIApplication.shared.statusBarFrame.height + (self.navigationController?.navigationBar.frame.height)!
Это работает как шарм.Затем я могу создать пользовательский UIView с высотой, установленной на navBarHeight
, добавив нужный цвет на мои обычные виды, и он прекрасно работает.
Однако, он не работает, когда что-то появляется в строка состояния .
Например, : когда я звоню, или когда у моего личного homespot есть активное соединение, когда я записываю (голос или экран),красный, зеленый или синий наложение видимо в строке состояния, и высота увеличивается.Если я затем открою свое приложение, высота не будет правильной, а высота представления navigationBar
будет слишком высокой, что сделает мой основной контент частично невидимым сверху.
Как я могу принять это во внимание?