我有一个简单的测试应用程序设置如下:
UITabBarController ---> UINavigationController ---> [root to] --->的UIViewController
紫色条只是一个UIView,里面有一个按钮。这种观点的限制是:
ViewController内的代码通过按钮切换状态栏:
<form>
<p><input type="checkbox" />Check Me to make the Text Box a Required Field</p>
<input type="text" />
<input type="submit" value="Submit" />
</form>
问题:
使用此特定设置,当状态栏重新出现/向下滑动时,紫色UIView不会相应调整(topLayoutGuide)并且不会随状态栏向下移动,最终结果如下:
然后它试图赶上并获得所有奇怪和抵消。如果我在动画块中调用强制更新,可以阻止这种情况发生:
@IBAction func updateStatusBar(_ sender: Any) {
UIView.animate(withDuration: 0.5, animations: {
self.setNeedsStatusBarAppearanceUpdate()
})
}
override var prefersStatusBarHidden: Bool {
return !UIApplication.shared.isStatusBarHidden
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}
但我当然不应该强迫这一点。
以下是我期望/希望拥有的行为:
有什么想法吗?这是Apple开发人员忽视的错误,还是我错误地使用了框架?