【问题标题】: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

我想知道如何重置导航栏外观以使底部边框线(阴影图像)重新出现?

【问题讨论】:

    标签: ios swift uinavigationcontroller uinavigationbar


    【解决方案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
    

    【讨论】:

    • 嗨,谢谢。但是上面的代码不能让底线再次出现。我在其他答案中看到这样做是正确的代码,但它目前似乎不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多