渲染故事板时出现 IBDesignable 错误

Posted

技术标签:

【中文标题】渲染故事板时出现 IBDesignable 错误【英文标题】:IBDesignable errors when rendering storyboard 【发布时间】:2018-01-04 10:39:24 【问题描述】:

我尝试遵循1 和2 中的一些指南,但是当我尝试在情节提要中呈现自定义视图时出现错误。

无法渲染和更新视图控制器的自动布局状态。代理抛出异常。

这是我迄今为止尝试过的:

@IBDesignable final class CustomView: UIView 
    override init(frame: CGRect) 
        super.init(frame: frame)
        setup()
    

    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        setup()
    

    private func setup() 
        let customViewNib = loadFromNib()
        customViewNib.frame = bounds
        customViewNib.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
        addSubview(customViewNib)
    

    func loadFromNib() -> UIView 
        let nib = UINib(nibName: "CustomView", bundle: Bundle.main)
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
        return view
    

我已经设置了我的自定义视图的文件所有者。

我已经创建了一个新的空项目来解决这个问题:

https://github.com/ivangodfather/CustomView

https://ufile.io/imr9p

【问题讨论】:

请将该 ufile 链接后面的任何内容上传到此站点。将代码或图像放在这里。 很遗憾我不能在这里上传我的项目 【参考方案1】:

问题似乎在捆绑包中。

let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)

有关获取错误日志的更多信息,您可以查看此答案:https://***.com/a/42678873/2000162

【讨论】:

【参考方案2】:

请试试这个替换功能

func loadFromNib() -> UIView 
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "CustomView", bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
        return view
//        let nib = UINib(nibName: "CustomView", bundle: Bundle.main)
//        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
//        return view
    

【讨论】:

以上是关于渲染故事板时出现 IBDesignable 错误的主要内容,如果未能解决你的问题,请参考以下文章

@IBDesignable错误:无法更新自动布局状态

将故事板指南标题设置为 @IBInspectable 值,以便快速自定义 @IBDesignable 视图?

使用 XCode 故事板切换视图控制器时出现黑屏

仅在从iPhone 11开始使用故事板启动后,应用程序启动时出现黑屏

故事板无法加载

故事板找不到 ControlTemplate 元素