在视图控制器中重置导航栏的外观

时间:2020-02-09 16:59:36

标签: ios swift uinavigationcontroller uinavigationbar

我已使用以下方式禁用了导航栏的底部边框线(阴影图像):

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 :(得分:0)

解锁设备不会调用viewWillAppear,可能是您正在使用BaseViewController并在UIApplicationDidBecomeActiveNotification上添加Notification Observer

尝试在AppDelegate上使用外观代替

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

然后再次出现该行

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