Godfather
Godfather

Reputation: 4330

iOS statusBar background goes to black after transition

I'm pushing from a VC1 inside a UINavigationController to a VC2. VC2 has a transparent navigationBar.

In viewDidLoad inside VC2:

self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.barTintColor = .clear
self.navigationController?.navigationBar.backgroundColor = .clear

When i push the back button i want to restore the navigationBar as it was (green color), so inside viewWillDissapear i have the following:

self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.barTintColor = .green
self.navigationController?.navigationBar.backgroundColor = .green

But i get this weird black status bar while transitioning:

strange black line on topenter image description here

Here is a sample project

Here is expected transition: enter image description here

Upvotes: 2

Views: 1171

Answers (1)

PPL
PPL

Reputation: 6555

Can you please try below,

override func viewDidLoad() {
    super.viewDidLoad()

    UINavigationBar.appearance().backgroundColor = .clear
    UINavigationBar.appearance().barTintColor = .clear

    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
}

and

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    UINavigationBar.appearance().backgroundColor = .green
    UINavigationBar.appearance().barTintColor = .green

    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
}

Upvotes: 1

Related Questions