我试图将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.
发布于 2017-09-26 10:56:28
我们不应该从super.loadView()函数调用loadView。
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview
如果使用Interface创建视图并初始化视图控制器,则不能重写此方法。
我们有类似的东西,并通过将代码移出loadView方法来修复它。因为loadView用于构造视图,而不是要自定义视图的时间点。
发布于 2017-09-26 11:09:05
对于所有的意图和目的,您都不应该覆盖loadView或自己调用它。相反,您应该重写awakeFromNib()或viewDidLoad(),以便在视图显示在屏幕上之前进一步自定义视图。
您还可以在视图出现在viewWillAppear(animated:)中的任何位置之前,对视图进行最后的第二次修改。
https://stackoverflow.com/questions/46424215
复制相似问题