👆👆👆👆一图抵十句
在很多需要阅读的页面,特别是 WebView,UINavigationBar 经常会占了版面的一部分,这个问题在小屏幕 iPhone(5s,SE)上尤为突出。而要实现上图的效果,其实一句就可以:
navigationController?.hidesBarsOnSwipe = true
这个是 iOS8 后 UINavigationController 增加的一个特性。这个属性设成 true 后,controller 的 view 会自动增加一个 barHideOnSwipeGestureRecognizer 的手势识别,用户向上划的时候就可以隐藏 navigation bar,向下划的时候会显示回来。
除了 hidesBarsOnSwipe,UINavigationController 还有另一个属性 hidesBarsOnTap,是当某个控件响应了 barHideOnTapGestureRecognizer 的单击手势,就会隐藏/显示 navigation bar。但因为这个手势没有预设响应的控件,所以要手动设置
navigationController?.hidesBarsOnTap = true
if let recognizer = navigationController?.barHideOnTapGestureRecognizer { recogView.addGestureRecognizer(recognizer)
}
这样当用户单击 recogView 的时候,navigation bar 就会自动隐藏/显示了。