Полупрозрачный NavigationBar ведет себя странно при вызове - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть 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 будет слишком высокой, что сделает мой основной контент частично невидимым сверху.

Как я могу принять это во внимание?

1 Ответ

0 голосов
/ 29 декабря 2018

Я сейчас исправил это, добавив пользовательское представление, которое имеет backgroundColor, которое я хочу для моего navigationBar.Затем я устанавливаю ограничения для верхнего на view.topAnchor и для нижнего на view.safeAreaLayoutGuide.topAnchor.Это промежуток между самой верхней частью экрана и верхней частью safeAreaLayoutGuide, который расположен под navigationBar.

. Я не совсем уверен, является ли это наилучшим возможным решением, поэтому, пожалуйста,дайте мне знать, если есть лучший способ и / или какие проблемы я мог бы столкнуться с этим подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...