How to change navigationBar height in iOS 11?

Mina picture Mina · Sep 10, 2017 · Viewed 18k times · Source

Apparently changing the navigationBar height faced a new approach in iOS 11. in previous iOS versions it was possible to change the navigationBar height by hiding the default navigationBar and adding a new one with custom frame:

self.navigationController?.setNavigationBarHidden(true, animated: false)
let customNavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 64))
self.view.addSubview(customNavigationBar)

But it seems that it is not working in iOS 11 xCode beta. no matter what the new height is, it will always stay at 44.

this is what I've got in xCode 9:

enter image description here

does anyone know how to solve the problem?

Answer

Rashwan L picture Rashwan L · Sep 10, 2017

Your code is working fine and it´s nothing wrong with it. If you change the background color of your customNavigationBar you´ll see that you´ll get the navigation bar with the desired height. But it seems like it´s an issue with Xcode 9 to hide the default navigation bar.

Your code with:

Xcode 9 enter image description here

Xcode 8 enter image description here

As you can see in the Xcode 9 image, you have the custom navigation bar but the default one does not hide. Probably a bug in Xcode 9, I did not manage to hide it through the Storyboard either.

This seems to be a bug in Xcode 9, bug reports has been filed to Apple.