导航栏大标题过渡代理

3
我已经在我的导航栏中启用了自动显示模式大标题,这样当用户滚动时,它会收缩。是否有一种方法可以在此过渡发生时得到通知?我没有找到任何委托方法来实现这个功能。我有一个右侧栏按钮项,其标签很长,我想在大标题收缩时隐藏它,以便标题能够完美居中。
1个回答

3
显然,没有委托或任何其他官方方式来通知此事。所以我的解决方法是使用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次,所以在进行任何更新之前,请检查它们是否已经完成。"最初的回答"

1
你可以在viewDidLayoutSubviews中检查相同的内容。它的调用频率比scrollViewDidScroll少一点。 - Starsky
1
有没有更好的方法来避免硬编码44? - ChikabuZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接