0

I'm trying to work out how to reset a transparent 'large title' nav bar to the default appearance settings.

I use the following setTransparent() function to configure my transparent navbar.

The reset() function successfully resets the default size nav bar but fails to reset the 'large title' nav bar.

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
    }
}

I think it's something to do with 'large titles' not working with backgroundImage/shadowImage...

aiden
  • 21
  • 2

1 Answers1

0

You may try this function to reset at large title mode:

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]
}
E.Coms
  • 11,065
  • 2
  • 23
  • 35