隐藏UIStatusBar时UIView上的行为怪异?

时间:2014-08-08 20:16:50

标签: ios uiscrollview nslayoutconstraint

我有一个放在UIScrollView上的视图,它根据UIScrollView的内容偏移量移动。我通过在scrollViewDidScroll中调整视图的垂直约束来实现这一点:

topViewTopConstraint.constant = -scrollView.contentOffset.y - topView.frame.height

topView移动很大,直到不透明状态栏需要隐藏,即达到某个阈值时。在我的VC scrollViewDidScroll中,我使用以下代码实现它

if -scrollView.contentOffset.y <= thresholdY {
                self.statusBarHidden = true
            } else {
                self.statusBarHidden = false
            }
            self.setNeedsStatusBarAppearanceUpdate()

当scrollView的Y内容偏移量达到thresholdY时,topView会加速-scrollView.contentOffset.y

我在{{1}}上登录了一下,在抽搐期间似乎跳了20个像素。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

topView约束是否基于顶部指南?问题是顶部约束可能是根据顶部引导线的底部定义的,它是状态栏的底部。当您隐藏线移动的状态栏时。因此,当偏移量达到您的阈值时,它会隐藏状态栏,然后使if语句不真实,从而重新打开状态栏,依此类推。

您可以定义与底部指引线相关的顶部约束或其他不变的约束。