[英]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.