有没有办法让自定义约束在界面生成器中工作?

Is there a way to make a custom constraint work in interface builder?

制作一个具有固定高度约束的 UIView,注意我在 IB 中将其设置为 40。

将约束 class 更改为:

@IBDesignable class BadassHeightConstraint: NSLayoutConstraint {

    override var constant: CGFloat {
        set {
            super.constant = newValue
        }
        get {
            return calc()
        }
    }

    private func calc() -> CGFloat {
        return 100.0
    }
}

这个在运行时完美运行,左图,它是 100,而不是 40。

但是,我无法在 IB 中使用它。为什么会这样?

是否有任何解决方案可以让这些在 IB 中工作?

简单的说,只有一个UIView可以@IBDesignable.