Панель навигации Большой заголовок делегата перехода
Я включил Large Title
в моей панели навигации с автоматическим Display Mode
, чтобы он уменьшался при прокрутке пользователя. Есть ли способ получить уведомление, когда этот переход происходит? Я не нашел никакого метода делегата для этого. у меня есть Right Bar Button Item
с длинной меткой, которую я хотел бы скрыть, когда Large Title сокращается, чтобы заголовок был идеально отцентрирован.
1 ответ
Очевидно, нет ни делегата, ни какого-либо другого официального способа получить уведомление об этом. Так что мой обходной путь использует 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
}
}
}
Это не работает на iPad, так как высота панели навигации отличается, но это предусмотрено в моем случае.
Также имейте в виду, что scrollViewDidScroll
вызывается XX раз за одну небольшую прокрутку, поэтому, прежде чем делать какие-либо обновления, убедитесь, что они еще не выполнены.