我在我的视图中添加了一个滚动视图,它悬停在状态栏上(我隐藏了它)。滚动视图工作正常,但是当我滚动到顶部时,我有一个白色空间,当我点击我的屏幕时它会消失,当我向下滚动然后再向上时会再次出现。
我注意到滚动条不会显示在我的视图顶部,而是停在状态栏上。
以下是截图,向您展示我的意思。
在这里,我处于视图的顶部,但滚动条不是:
以下是我再次滚动顶部时出现的白色状态栏的相同视图:
当我点击屏幕或向下滚动时,它会消失。
以下是我的约束:
我认为这是布局保证金的问题或类似的问题,但我不知道应该改变什么?
我在视图控制器中隐藏状态栏:
override func viewWillAppear(_ animated: Bool) {
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
super.viewWillAppear(animated)
}
编辑:即使我评论隐藏状态栏的行,我的滚动视图仍然存在同样的问题。所以问题不在于我隐藏它的方式。
答案 0 :(得分:1)
正如Sam所说,我将content insets
更改为"从不"在滚动视图上它可以工作。
答案 1 :(得分:0)
虽然与您的问题无关,但我必须对隐藏状态栏的方式做出反应 - 正确的方法是覆盖视图控制器中的prefersStatusBarHidden
并在self.setNeedsStatusBarAppearanceUpdate()
中调用viewWillAppear
}:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
return true
}
<强>更新强>
由于您的视图控制器位于UINavigationViewController
内,因此您需要覆盖childViewControllerForStatusBarHidden
中的UINavigationViewController
以使用visibleViewController
作为控制器来确定状态栏隐藏(我添加了覆盖childViewControllerForStatusBarStyle
以获得一致性):
extension UINavigationController {
open override var childViewControllerForStatusBarStyle: UIViewController? {
return visibleViewController
}
open override var childViewControllerForStatusBarHidden: UIViewController? {
return visibleViewController
}
}