gpt4 book ai didi

swift - 在 ScrollView 中动态隐藏状态栏时滞后/屏幕卡住 (Swift 3)

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:27 24 4
gpt4 key购买 nike

我目前在不同的页面上使用 Scroll View。我的目标是在一个特定页面上隐藏 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
}

最佳答案

删除 scrollViewWillBeginDecelerating。尝试:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentScrollPosition : CGFloat = scrollView.contentOffset.x / scrollView.frame.size.width
let page = lroundf(Float(currentScrollPosition))
if page != currentPage {
currentPage = page
if currentPage == 0 {
isStatusBarPreferablyHidden = true
} else {
isStatusBarPreferablyHidden = false
}
self.setNeedsStatusBarAppearanceUpdate()
}
}

关于swift - 在 ScrollView 中动态隐藏状态栏时滞后/屏幕卡住 (Swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40920817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com