gpt4 book ai didi

ios - 代码;将自动布局约束设置为定义的变量值

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:15 24 4
gpt4 key购买 nike

是否可以定义一个变量,并为该变量设置一个约束常量值?

因此,只需更改变量即可更改许多约束。我想我看到有人直接从界面生成器中这样做了?

Constraint of a view, from xcode's interface builder

编辑:

每个标签之间都有一个约束。我需要一种方法来更改所有这些约束,以便它们获得相同的值。这可能吗?

如果我使用 socket 集合,我将不得不遍历所有约束,并更改每个约束的值。我正在寻找这样的方法:

// SEUDO!!
lineSeperationWidth = 31 // changes all 4 constraints.

multiple similar constraints

最佳答案

NSLayoutContraint 都是独立的对象,Xcode 无法使用同一个变量设置多个约束的常量 值。您可以获得的最接近的方法是使用 @IBOutlet 集合,然后使用 didSet property observer 来保存要更新的公共(public)空间值的变量集合中的每个约束。

这是我创建的一个示例,它根据每次按下 Go 按钮时设置到 space 属性的随机值来分隔标签:

class ViewController: UIViewController {

@IBOutlet var spacers: [NSLayoutConstraint]!

var space: CGFloat = 20.0 {
didSet {
spacers.forEach { $0.constant = space }
}
}

override func viewDidLoad() {
super.viewDidLoad()
}

@IBAction func spaceOut(sender: AnyObject) {
// set space to a random value
space = CGFloat(arc4random_uniform(30)) + 20.0
}

}

标签之间的每个垂直空间约束都连接到@IBOutlet 集合spacers。以下是Connections Inspector 显示的内容:

connections inspector


这是实际操作:

enter image description here

关于ios - 代码;将自动布局约束设置为定义的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637124/

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