我正在尝试将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中的任何内容。
答案 0 :(得分:2)
我们不应该从super.loadView()
函数调用loadView
。
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview
如果使用Interface Builder创建视图并初始化 视图控制器,您不能覆盖此方法。
我们有类似的东西并通过将代码移出loadView
方法来修复它。因为loadView用于构建视图,而不是您想要自定义视图的时间点。
答案 1 :(得分:1)
出于所有意图和目的,您不应该覆盖loadView或自己调用它。您应该覆盖awakeFromNib()或viewDidLoad(),以便在屏幕上显示之前进一步自定义视图。
您还可以在视图出现在viewWillAppear(动画:)中的任何位置之前,继续进行第二次触摸视图。
祝你好运!