Saú*_*ril 54
我没有实现它使用UIScrollView,但我存档它与其他ViewControllers一起使用UITableView作为第一个视图.
如果tableView不是第一个视图,则大标题无法自动隐藏.您很可能需要确保tableView是主视图的子视图数组中的第一个元素.
我希望这能解决你的问题.
你尝试过这样的事吗?当内容向上滚动时,它会转换大标题显示模式.
class P1ViewController: UIViewController, UIScrollViewDelegate
{
var canTransitionToLarge = false
var canTransitionToSmall = true
func scrollViewDidScroll(_ scrollView: UIScrollView)
{
if canTransitionToLarge && scrollView.contentOffset.y <= 0 {
UIView.animate(withDuration: 0.5) {
self.navigationItem.largeTitleDisplayMode = .always
}
canTransitionToLarge = false
canTransitionToSmall = true
}
else if canTransitionToSmall && scrollView.contentOffset.y > 0 {
UIView.animate(withDuration: 0.5) {
self.navigationItem.largeTitleDisplayMode = .never
}
canTransitionToLarge = true
canTransitionToSmall = false
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
在代码中设置 prefersLargeTitles 确实对我有用,可以使 NavBar 标题随着滚动而缩小和增长。我确实注意到如果您通过 InterfaceBuilder 设置属性,则收缩功能不起作用。
而是在代码中设置
self.navigationController?.navigationBar.prefersLargeTitles = true
Run Code Online (Sandbox Code Playgroud)