简体   繁体   English

在iOS 11中调用self.setNeedsStatusBarAppearanceUpdate()时,scrollViewDidScroll崩溃

[英]scrollViewDidScroll crash when calling self.setNeedsStatusBarAppearanceUpdate() in iOS 11

I have this method 我有这种方法

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

    }
}

The idea is to animated a top bar and change the status bar color, so I use setNeedsStatusBarAppearanceUpdate to 这个想法是对顶部栏进行动画处理并更改状态栏颜色,因此我将setNeedsStatusBarAppearanceUpdate设置为

override var preferredStatusBarStyle: UIStatusBarStyle {
    if navBarHidden {
        return .lightContent
    }

    return .default 
}

but.... if I compile in Xcode 9 and run it in a real device or simulator with iOS 11 it crash in this line 但是....如果我在Xcode 9中编译并在带有iOS 11的真实设备或模拟器中运行它,则会在此行中崩溃

self.setNeedsStatusBarAppearanceUpdate()

and if I try iOS 10.3 works as expected, why?? 如果我尝试iOS 10.3可以正常工作,为什么? any help please! 任何帮助,请!

在此处输入图片说明

if #available(iOS 11.0, *) {
    setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
} else {
    setNeedsStatusBarAppearanceUpdate()
}

note: This is a small but significant change in iOS 11. If you rely on hiding the status bar to use gestures at the screen edges you should update your app and override setNeedsUpdateOfScreenEdgesDeferringSystemGestures for iOS 11. 注意:这是iOS 11中的一个很小但重要的变化。如果您依靠隐藏状态栏来在屏幕边缘使用手势,则应该更新应用并覆盖iOS 11的setNeedsUpdateOfScreenEdgesDeferringSystemGestures

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM