Show search bar in navigation bar without scrolling on iOS 11
The following makes the search bar visible at first, then allows it to hide when scrolling:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if #available(iOS 11.0, *) { navigationItem.hidesSearchBarWhenScrolling = false }}override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if #available(iOS 11.0, *) { navigationItem.hidesSearchBarWhenScrolling = true }}
Using isActive
didn't do what I wanted, it makes the search bar active (showing cancel button, etc.), when all I want is for it to be visible.
You can set the property isActive
to true
after adding the searchController to the navigationItem
.
Just like this:
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) searchController.isActive = true}
For me it worked after adding following lines in viewDidLoad()
method:
navigationController?.navigationBar.prefersLargeTitles = truenavigationController!.navigationBar.sizeToFit()