gpt4 book ai didi

ios - 有没有办法在 Interface Builder 的自动布局约束中添加标识符?

转载 作者:IT王子 更新时间:2023-10-29 08:00:07 24 4
gpt4 key购买 nike

在 Interface Builder 中做了一些视觉布局后,我创建了一些我想在运行时访问的约束。有没有办法在 Interface Builder 中标记或识别约束,以便以后可以查找它们?

我想这样做的原因是我需要根据视觉指定的约束执行一些计算。我知道 Apple 提供了 Visual Format Language我可以在 Controller 中以编程方式指定约束。我宁愿不使用这种方法,所以我不会失去 IB 的设计时反馈。

编辑

制作引用 socket 确实有效,但问题仍然存在。

最佳答案

更新:

正如 Bartłomiej Semańczyk 在 his answer 中所解释的那样,现在 NSLayoutConstraintAttributes Inspector 中有一个可见的 Identifier 字段,因此您不必自己公开该字段。只需在 Document Outline View 或 Storyboard View 中选择约束,然后在右侧的 Attributes Inspector 中添加标识符。


较早的答案:

是的,这是可以做到的。 NSLayoutConstraint 有一个名为 identifier 的属性,可以在 Interface Builder 中公开并分配。为了对此进行演示,我创建了一个单 View 应用程序,它有一个红色框 subview 。这个 subview 有 4 个约束:宽度、高度、在容器中水平居中、在容器中垂直居中。我通过执行以下操作为宽度约束提供了标识符 redBoxWidth:

  1. 单击文档布局 View 中的宽度限制。然后在 User Defined Runtime Attributes 下的 Identity Inspector 中,单击 Key Path 下的 +。将 keyPath 更改为 identifier,将 Type Boolean 更改为 String,并设置ValueredBoxWidth

    naming a constraint

  2. 然后在 ViewDidLoad 中可以通过名称找到约束并更改其值:

    class ViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()

    for subview in view.subviews as [UIView] {
    for constraint in subview.constraints() as [NSLayoutConstraint] {
    if constraint.identifier == "redBoxWidth" {
    constraint.constant = 300
    }
    }
    }
    }
    }

关于ios - 有没有办法在 Interface Builder 的自动布局约束中添加标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791597/

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