是否可以通过接口构建器从超类更改约束的常量值?

时间:2019-08-01 08:46:22

标签: ios swift xcode

以这种方式设置约束之后,我正尝试缩放约束的值:

@IBDesignable
class ScaledConstraint: NSLayoutConstraint {
    @IBInspectable var constantValue: CGFloat = 0 { didSet { constantValueDidSet() } }

    func constantValueDidSet() {
        super.constant = (constantValue / 320) * UIScreen.main.bounds.width
    }
}

但是这种方法迫使我为每个约束更改IBInspectable变量。我曾尝试处理它的默认默认值,但仅当我从代码中设置常量时,它才起作用,而当我从界面生成器中设置它时,它不起作用:

override var constant: CGFloat {
        set(newValue) {
            self.constant = (newValue / 320) * UIScreen.main.bounds.width
        }
        get {
            return self.constant
        }
    }

在没有自定义IBInspectable变量的情况下,是否可以通过接口构建器设置常量后立即更改常量值?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以将情节提要中的约束输出到View Controller中,这与输出UIView和其他View组件的方式类似,尽管更烦人的是自己获取输出。 (答案Here向您展示了操作方法)。

因此,您的一家门店看起来像这样:

@IBOutlet weak var myConstraint: NSLayoutConstraint!

您以后可以拨打的电话:

myConstraint.constant = 100 //Or whatever value you want

此后,您应该确保致电:

view.layoutIfNeed()