LoadVIew() 中的 UIVisualEffectView
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.[=12 中的任何内容=]
我们不应该从 loadView
函数中调用 super.loadView()
。
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview
If you use Interface Builder to create your views and initialize the
view controller, you must not override this method.
我们有类似的东西并通过将代码移出 loadView
方法来修复它。因为 loadView 用于构建视图,而不是您要自定义视图的时间点。
出于所有意图和目的,您永远不应重写 loadView 或自己调用它。您应该改写 awakeFromNib()
或 viewDidLoad()
以在屏幕上显示之前进一步自定义您的视图。
您还可以在视图出现在 viewWillAppear(animated:)
中的任何位置之前对其进行最后一秒润色。
我正在尝试将 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.[=12 中的任何内容=]
我们不应该从 loadView
函数中调用 super.loadView()
。
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview
If you use Interface Builder to create your views and initialize the view controller, you must not override this method.
我们有类似的东西并通过将代码移出 loadView
方法来修复它。因为 loadView 用于构建视图,而不是您要自定义视图的时间点。
出于所有意图和目的,您永远不应重写 loadView 或自己调用它。您应该改写 awakeFromNib()
或 viewDidLoad()
以在屏幕上显示之前进一步自定义您的视图。
您还可以在视图出现在 viewWillAppear(animated:)
中的任何位置之前对其进行最后一秒润色。