【发布时间】:2017-04-16 16:36:15
【问题描述】:
我目前正在使用带有不同页面的Scroll View。我的目标是在一个特定页面上隐藏Status Bar。每次Status Bar 即将重新出现/消失时,都会有一个非常烦人的滞后并且屏幕冻结。
这是我的方法:
首先我定义了两个变量
private var currentPage = 0
private var isStatusBarPreferablyHidden = true
然后,当用户滑动到第一页时,我使用 Scroll View Delegate 中的两个函数调用 setNeedsStatusBarAppearanceUpdate
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentScrollPosition : CGFloat = self.navigation.contentOffset.x / self.navigation.frame.size.width
currentPage = lroundf(Float(currentScrollPosition))
}
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
if currentPage == 0 {
isStatusBarPreferablyHidden = true
} else {
isStatusBarPreferablyHidden = false
}
self.setNeedsStatusBarAppearanceUpdate()
}
最后我重写了状态栏函数来更新状态栏的外观。
override var prefersStatusBarHidden: Bool {
return isStatusBarPreferablyHidden
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.none
}
【问题讨论】:
标签: swift uiviewcontroller uiscrollview swift3 statusbar