Cant change navigation bar height ios 11
Changing the height of the UINavigationBar is no longer directly supported in iOS 11 (see here, here & here).
The best you can hope for is to do something like having a view behind the navigation bar and removing the borders (see here for customisation examples).
Cannot change navigation bar item height in iOS 11
You can change the width of navigation bar button item by using this code -
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var frame: CGRect? = navigationItem.leftBarButtonItem?.customView?.frame
frame?.size.width = 5 // change the width of your item bar button
self.navigationItem.leftBarButtonItem?.customView?.frame = frame!
}
override var prefersStatusBarHidden : Bool {
return true
}
Or from storyboard -
Make sure your Assets.xcassets
image is set as Render As - Original
Image Just like -
How to change navigationBar height in iOS 11?
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
Xcode 8
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.
How to create and change size height navigation bar iOS 11
I think you can't change it - not supported anymore. Here's the quote from Apple staff
Resizing the navigation bar (via any method, including subclassing) is
not supported, and neither is changing the frame of a navigation bar
that is owned by a UINavigationController (the navigation controller
will happily stomp on your frame changes whenever it deems fit to do
so). The navigation bar needs to be placed on the bottom edge of
the status bar, not underlapping the status bar, and with its natural
height.Finally, the internal layout of the
navigation bar is an implementation detail including all class names
and orderings. Any code that relies upon the ordering of the
navigation bar's subviews or the names of any of their classes is
likely to encounter issues in the future, as these are all private
details. Please do not rely upon them. If there are things you want to
do with a navigation bar that you cannot
A walk around is to use the image view then change its height.
UISearchBar increases navigation bar height in iOS 11
I got black line under NavigationBar with SearchBar in iOS 11 in two cases:
when i pushed another ViewControllers from ViewController with UISearchBar
when i dismissed ViewController with UISearchBar with "drag right to dismiss"
My solution was: adding this code to my ViewController with UISearchBar:
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController.view setNeedsLayout]; // force update layout
[self.navigationController.view layoutIfNeeded]; // to fix height of the navigation bar
}
Swift 4 Update
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.view.setNeedsLayout() // force update layout
navigationController?.view.layoutIfNeeded() // to fix height of the navigation bar
}
Related Topics
A Codable Structure Contains a Protocol Property
How to Load the Photo Library into Uicollectionview? Swift
Using Structs (Bytes) with Swift - Struct to Nsdata and Nsdata to Struct
How to Observe Array Property Changes in Rxswift
How to Retrieve a Value from Dictionary in Swift 3
Swiftui - Pass Data to Different Views
Swift: How to Hold Any Possible Instance of a Generic Type in a Variable
How to Create a Nsmutabledictionary in Swift
Swift: Reusable Uiview in Storyboard and Sizing Constraints
How to Blur the Background in a Swiftui MACos Application
Identify Mkpointannotation in Mapview
How to Convert Text to Speech for Osx in Swift Playground
iOS Charts Remove Decimal from Yvalues
A Swiftier Way to Convert String to Unsafepointer<Xmlchar> in Swift 3 (Libxml2)
Realm: Map JSON to Realm-Objects with Alamofire
Swift Protocol with Associated Type - Type May Not Reference Itself as a Requirement