gpt4 book ai didi

ios - 是否可以通过接口(interface)生成器从父类(super class)更改约束的常量值?

转载 作者:行者123 更新时间:2023-11-28 07:23:27 25 4
gpt4 key购买 nike

我试图在以这种方式设置约束后缩放约束的值:

@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 变量的情况下从界面构建器设置常量值后更改常量值?提前致谢!

最佳答案

您可以将 Storyboard 中的约束输出到您的 View Controller 中,这与您输出 UIView 和其他 View 组件的方式类似,尽管自己获取输出有点烦人。 (答案 Here 告诉你如何去做)。

所以你的一个网点看起来像这样:

@IBOutlet weak var myConstraint: NSLayoutConstraint!

您稍后可以调用:

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

之后,您一定要调用:

view.layoutIfNeed()

关于ios - 是否可以通过接口(interface)生成器从父类(super class)更改约束的常量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57305115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com