Панель навигации Большой заголовок делегата перехода

Я включил 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 раз за одну небольшую прокрутку, поэтому, прежде чем делать какие-либо обновления, убедитесь, что они еще не выполнены.

Другие вопросы по тегам