Очевидно, что нет ни делегата, ни какого-либо другого официального способа получить уведомление об этом. Так что мой обходной путь использует 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 раз за одну небольшую прокрутку, поэтому перед выполнением каких-либо обновлений проверьте, что они еще не были сделаны.