首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIVisualEffectView In LoadVIew()

UIVisualEffectView In LoadVIew()
EN

Stack Overflow用户
提问于 2017-09-26 10:40:33
回答 2查看 168关注 0票数 0

我试图将visualEffect添加到一个在iOS10和早期版本上运行良好的视图中.但在iOS 11上,它崩溃了。错误原因列于下:

代码语言:javascript
复制
 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."

我使用以下代码:

代码语言:javascript
复制
 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.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-26 10:56:28

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2017-09-26 11:09:05

对于所有的意图和目的,您都不应该覆盖loadView或自己调用它。相反,您应该重写awakeFromNib()viewDidLoad(),以便在视图显示在屏幕上之前进一步自定义视图。

您还可以在视图出现在viewWillAppear(animated:)中的任何位置之前,对视图进行最后的第二次修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46424215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档