Reputation: 3899
I have enabled Large Title
in my navigation bar with automatic Display Mode
, so that it shrinks when user scrolls. Is there a way to get notified when this transition happens? I didn't found any delegate method for this. I have a Right Bar Button Item
with long label which I'd like to hide when Large Title gets shrunk so that the title is perfectly centered.
Upvotes: 3
Views: 706
Reputation: 3899
Apparently there's no delegate nor any other official way to be notified about this. So my workaround is using ScrollViewDelegate
:
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let height = navigationController?.navigationBar.frame.size.height, height == 44 {
// handle small title
}
else {
// handle large title
}
}
}
This doesn't work on iPad as the height of navbar is different, but that's intended in my case.
Also keep in mind that scrollViewDidScroll
gets called XX times for a single small scroll, so before doing any updates, check they haven't been done already.
Upvotes: 3