如何在iOS 13中删除具有外观的导航栏背景?

时间:2019-10-26 16:17:15

标签: ios swift uinavigationbar ios13

我试图在带有#available的if语句中删除iOS 13中的导航栏背景。我知道在else语句中删除iOS 12和旧版iOS导航栏背景的原始代码。但是,Apple确实在任何地方宣布了一个名为 Appearance 的新系统,以支持该新的iOS 13系统。

    let app = UINavigationBarAppearance()

    let navigationBar = self.navigationController?.navigationBar

    app.configureWithOpaqueBackground()
    app.shadowImage = UIImage()


    self.navigationController?.navigationBar.scrollEdgeAppearance = app

    navigationBar!.standardAppearance = app
    navigationBar!.scrollEdgeAppearance = app

我相信此configureWithOpaqueBackground()允许我们删除导航栏背景,但是我在iOS 13.1模拟器上测试显示黑色导航栏背景。我知道是什么原因造成的。

     app.configureWithOpaqueBackground()
     app.titleTextAttributes = [.foregroundColor: UIColor.white]
     app.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
     app.backgroundColor = #colorLiteral(red: 0.1603881121, green: 0.1677560508, blue: 0.2133775949, alpha: 1)

该代码允许我们将自定义颜色放在黑色背景上。我准备在viewWillDisappear的语句中添加该代码,以通过删除self.navigationController?.navigationBar.scrollEdgeAppearance = appapp.configureWithOpaqueBackground()将导航栏背景恢复到app.shadowImage = UIImage()之前的正常彩色背景。现在,我需要在viewWillAppear的语句中创建半透明的导航栏背景,但是由于仍然显示黑色背景,因此它看不到任何半透明的背景。

非常感谢您为解决问题所提供的帮助! :)

1 个答案:

答案 0 :(得分:1)

如果您希望导航栏变得完全透明:

    let app = UINavigationBarAppearance()
    app.configureWithTransparentBackground()
    self.navigationController?.navigationBar.standardAppearance = app
    self.navigationController?.navigationBar.scrollEdgeAppearance = app
    self.navigationController?.navigationBar.compactAppearance = app

请勿弄乱导航栏的isTranslucent