scrollViewDidScroll崩溃的iOS调用self.setNeedsStatusBarAppearanceUpdate()当11
我有这样的方法scrollViewDidScroll崩溃的iOS调用self.setNeedsStatusBarAppearanceUpdate()当11
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView is GLIndexedCollectionView { return }
if scrollView.contentOffset.y >= 120 && self.navBarHidden == true {
self.navBarHidden = false
self.setNeedsStatusBarAppearanceUpdate()
self.topTvConstraint.constant = 44.0
self.view.layoutIfNeeded()
self.navigationBarConstraint.constant = 65
UIView.animate(withDuration: 0.2, delay: 0.0, options: .curveEaseOut, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
var scrollBounds = self.tv.bounds
scrollBounds.origin = CGPoint(x: 0, y: 185)
self.tv.bounds = scrollBounds
}
}
的想法是动画顶栏和更改状态栏的颜色,所以我用setNeedsStatusBarAppearanceUpdate到
override var preferredStatusBarStyle: UIStatusBarStyle {
if navBarHidden {
return .lightContent
}
return .default
}
但....如果我在Xcode 9编译并在真实的设备或仿真器与iOS 11它碰撞在该行运行它
self.setNeedsStatusBarAppearanceUpdate()
如果我尝试iOS 10.3按预期工作,为什么?请任何帮助!
if #available(iOS 11.0, *) {
setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
} else {
setNeedsStatusBarAppearanceUpdate()
}
注:这是iOS中11小而显著变化如果依靠隐藏状态栏用手势在屏幕边缘,你应该更新自己的应用,并覆盖setNeedsUpdateOfScreenEdgesDeferringSystemGestures
为iOS 11.
所以这是强制重新评估覆盖var preferredStatusBarStyle的新方法:UIStatusBarStyle ??? 现在,我知道这另一块代码,但是在这里崩溃的同一块 的一部分! () 这是怎么回事?你在哪里得到这个信息?顺便说一句,谢谢你的帮助 – goseta
https://useyourloaf.com/blog/avoiding-conflicts-with-system-gestures-at-screen-edges/从这里@ goseta –
您必须检查设备版本,才能调用此方法 –
但该方法在iOS11中不被弃用,是不是? – goseta
检查我的答案,这在我的项目中工作,所以我与你分享 –