首页 > 解决方案 > 导航栏大标题转换委托

问题描述

我已经Large Title在我的导航栏中启用了 automatic Display Mode,以便在用户滚动时它会缩小。有没有办法在这种转变发生时得到通知?我没有找到任何委托方法。我有一个Right Bar Button Item长标签,当大标题缩小时我想隐藏它,以便标题完全居中。

标签: iosuinavigationbarlarge-titlepreferslargetitles

解决方案


显然,没有任何代表或任何其他官方方式可以得到通知。所以我的解决方法是使用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 次,因此在进行任何更新之前,请检查它们是否已经完成。


推荐阅读