在视图控制器中重置导航栏的外观
Posted
技术标签:
【中文标题】在视图控制器中重置导航栏的外观【英文标题】:Reset the appearance of navigation bar in a view controller 【发布时间】:2020-02-09 16:59:36 【问题描述】:我使用以下方法禁用了导航栏的底部边框线(阴影图像):
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】:解锁设备不会调用 viewWillAppear,可能是您使用 BaseViewController 并在 UIApplicationDidBecomeActiveNotification 上添加 Notification Observer
尝试在 AppDelegate 上使用 Appearance
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
UINavigationBar.appearance().shadowImage = UIImage()
然后再次出现该行
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.shadowImage = nil
【讨论】:
嗨,谢谢。但是上面的代码不能让底线再次出现。我在其他答案中看到这样做是正确的代码,但它目前似乎不起作用。以上是关于在视图控制器中重置导航栏的外观的主要内容,如果未能解决你的问题,请参考以下文章
将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域