导航栏大标题转换委托
Posted
技术标签:
【中文标题】导航栏大标题转换委托【英文标题】:Navigation Bar Large Title transition delegate 【发布时间】:2019-05-24 07:56:48 【问题描述】:我在导航栏中启用了Large Title
自动Display Mode
,因此当用户滚动时它会缩小。有没有办法在这种转变发生时得到通知?我没有找到任何委托方法。我有一个带有长标签的Right Bar Button Item
,当大标题缩小时我想隐藏它,以便标题完全居中。
【问题讨论】:
【参考方案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 次,因此在进行任何更新之前,请检查它们是否已经完成。
【讨论】:
您可以在viewDidLayoutSubviews
中检查相同的内容。它的调用频率比scrollViewDidScroll
少一点。
有没有更好的方法不硬编码 44?以上是关于导航栏大标题转换委托的主要内容,如果未能解决你的问题,请参考以下文章
带有导航栏大标题的 UITableView 奇怪的滚动行为,顶部的弹跳效果在滚动到顶部时自动切断/生涩
UINavigationController 在 iOS7 中使用自定义转换委托隐藏导航栏