Сбросить внешний вид панели навигации в контроллере вида - PullRequest
1 голос
/ 09 февраля 2020

Я отключил нижнюю граничную линию (теневое изображение) панели навигации с помощью:

self.navigationController.navigationBar.setBackgroundImage(UIImage(), for: .default) 
self.navigationController.navigationBar.shadowImage = UIImage()

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

Но я хотел бы знать, что вызывает сброс панели навигации к конфигурации по умолчанию каждый раз, когда она появляется?

Так как я не могу , чтобы теневая линия снова появилась в другом ViewController, используя следующий код:

self.navigationController.navigationBar.setBackgroundImage(nil, for: .default) 
self.navigationController.navigationBar.shadowImage = nil

Я хотел бы знать, как сбросить внешний вид панели навигации на заставить нижнюю границу (теневое изображение) снова появиться?

1 Ответ

0 голосов
/ 09 февраля 2020

Разблокирующее устройство НЕ будет вызывать viewWillAppear, возможно, вы используете BaseViewController с добавлением Notification Observer на UIApplicationDidBecomeActiveNotification

Попробуйте использовать Appearance вместо AppDelegate

    UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
    UINavigationBar.appearance().shadowImage = UIImage()

И снова появиться на линии

    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    self.navigationController?.navigationBar.shadowImage = nil
...