繁体   English   中英

UIVisualEffectView在LoadVIew()中

[英]UIVisualEffectView In LoadVIew()

我正在尝试将visualEffect添加到在iOS10和早期版本上运行良好的视图...但是在iOS 11上它崩溃了。 错误原因如下:

 has been added as a subview to <UIVisualEffectView: 0x7feabe90d170; frame = (0 0; 375 812); layer = <CALayer: 0x6000006257c0>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView."

我正在使用以下代码:

 override func loadView() { 
    super.loadView()

    // create the blur view
    let blurView = UIVisualEffectView(effect: effect)
    if let oldView = view {
        blurView.frame = view.frame
        oldView.translatesAutoresizingMaskIntoConstraints = false
        blurView.contentView.addSubview(oldView)
        blurView.contentView.pinParentAllDirections(oldView)
    }
    view = blurView
}

奇怪的是,当我在viewDidload中添加此代码时,它正在传递崩溃...任何人都可以帮助我了解主要问题,或者我错过了iOS11的任何术语。

我们不应该从loadView函数调用super.loadView()

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview

如果使用Interface Builder创建视图并初始化视图控制器,则不得重写此方法。

我们有一些类似的东西,也通过将代码移出loadView方法来解决。 因为loadView用于构造视图,而不是要自定义视图的时间点。

出于所有目的和目的,切勿重写loadView或自己调用它。 相反,您应该重写awakeFromNib()或viewDidLoad(),以进一步自定义视图,然后将其显示在屏幕上。

您还可以最后一秒进行修饰,以使其在viewWillAppear(animated :)中的任何位置出现。

祝好运!

暂无
暂无

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

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