@IBDesignable类,.xib-File无法在Interface Builder中呈现

时间:2017-06-06 13:06:22

标签: swift xcode uiview ibdesignable

我有CustomClass.swiftCustomClass.xib。我希望XCode的Interface Builder使用提供的.xib-File呈现类CustomClass的视图。就像我运行应用程序时一样。

我正在使用XCode 8.3.2(8E2002)

CustomClass.swift

import UIKit


@IBDesignable class forceInterface: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        Bundle.main.loadNibNamed("forceInterface", owner: self, options: nil)
        self.addSubview(view)
        view.frame = self.bounds

    }



    @IBOutlet var view: UIView!
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var progressView: UIProgressView!

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()

    }
}

CustomClass.xib

文件所有者设置为CustomClass。它包含UIView,其中包含UISwitchUILabelCustomClass.xib

问题在于,虽然我的@IBDesignable中有CustomClass.swift,但它不会在InterfaceBuilder中呈现。我在那里放置UIView并将其类设置为CustomClassenter image description here

正如您所看到的,它甚至在检查器中说 Designables:最新。但我没有看到任何东西。

运行应用时,一切都按预期工作!

1 个答案:

答案 0 :(得分:0)

你为什么这样做

self.addSubview(view)
view.frame = self.bounds

在将视图的子视图添加到其超级视图

之前,您应该分配视图的框架
view.frame = self.bounds
self.addSubview(view)

即使您已将其指定为IBDesignable,我也不确定您为什么查看未加载。我通常使用这些步骤进行故障排除。

  • 关闭并重新打开Xcode
  • 清洁Xcode
  • 等待一段时间,通常大约一分钟左右,您将看到视图刷新/更新本身,显示您自定义绘制的内容