如何将透明的“大标题” UINavigationBar重置为默认外观设置?

时间:2019-03-25 21:22:21

标签: ios swift uinavigationbar uinavigation preferslargetitles

我正在尝试找出如何将透明的“大标题”导航栏重置为默认外观设置。

我使用以下setTransparent()函数来配置我的透明导航栏。

reset()函数可以成功重置默认大小的导航栏,但无法重置“大标题”导航栏。

extension UINavigationBar {

    func setTransparent() {

        // set large titles
        self.prefersLargeTitles = true

        // set colour of nav items
        self.tintColor = .white

        // set background colour
        self.barTintColor = .green

        // make transparent
        self.setBackgroundImage(UIImage(), for: .default)
        self.shadowImage = UIImage()
        self.isTranslucent = true
    }

    func reset() {
        self.setBackgroundImage(nil, for: .default)
        self.shadowImage = nil
        self.isTranslucent = false
    }
}

我认为这与“大标题”不兼容backgroundImage / shadowImage有关。

1 个答案:

答案 0 :(得分:0)

您可以尝试在大标题模式下重置此功能:

func setTransparent() {

    // set large titles
    self.prefersLargeTitles = false

    // set colour of nav items
    self.tintColor = .white

    // set background colour
    self.barTintColor = .green
self.backgroundColor = nil
    // make transparent
    self.setBackgroundImage(UIImage(), for: .default)
    self.shadowImage = UIImage()
    self.isTranslucent = true
}

func reset() {
    self.setBackgroundImage(nil, for: .default)
    self.shadowImage = nil
    self.backgroundColor = UIColor.green

    self.isTranslucent = false
   self.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.green]
}