Панель навигации Большой заголовок делегата перехода - PullRequest
0 голосов
/ 24 мая 2019

Я включил Large Title в моей навигационной панели с автоматическим Display Mode, чтобы он уменьшался при прокрутке пользователя.Есть ли способ получить уведомление, когда этот переход происходит?Я не нашел никакого метода делегата для этого.У меня есть Right Bar Button Item с длинным ярлыком, который я хотел бы скрыть, когда большое название сокращается, чтобы заголовок был идеально отцентрирован.

1 Ответ

0 голосов
/ 24 мая 2019

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

...