Строка заголовка навигации глючит, при возврате назад отображается серый фон.

Эта гифка поможет вам понять, в чем моя проблема:

введите здесь описание изображения

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

Действия по воспроизведению: клонируйте https://github.com/Jasperav/GlitchedNavigationBar или

  1. Создать новый проект
  2. Встроить существующий контроллер представления в контроллер панели вкладок
  3. Вставьте тот же контроллер представления в контроллер панели навигации.
  4. Добавьте новый контроллер просмотра в раскадровку
  5. В новом контроллере просмотра нажмите Скрыть нижнюю панель при нажатии (это вызывает проблему)
  6. Добавьте кнопку на первый контроллер просмотра, который будет отображать новый контроллер просмотра. Теперь у нас есть проблема.

Я использую Xcode 10 и Swift 4.2.


person J. Doe    schedule 27.09.2018    source источник
comment
Предположительно, вы делаете что-то необычное со своей панелью навигации — Подкласс? Пользовательский фон? Что-то другое?   -  person Ashley Mills    schedule 29.09.2018
comment
@AshleyMills Я добавил путь воспроизведения, я не делаю ничего странного, я думаю ...   -  person J. Doe    schedule 07.10.2018


Ответы (1)


Это происходит потому, что ваша панель навигации полупрозрачна и показывает часть вашего контроллера под панелью навигации. В вашем верхнем контроллере есть карта, и когда вы возвращаетесь назад, он анимирует ее под панелью навигации, что является причиной мерцания.

Чтобы изменить полупрозрачный эффект панели навигации только в одном контроллере, вам нужно добавить это в метод viewDidLoad:

navigationController?.navigationBar.isTranslucent = false

или если вы хотите изменить его глобально, добавьте это в свой метод didFinishLaunchingWithOptions в делегате приложения:

UINavigationBar.appearance().isTranslucent = false
person Jakub Sanestrzik    schedule 07.10.2018