- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 Interface Builder 中做了一些视觉布局后,我创建了一些我想在运行时访问的约束。有没有办法在 Interface Builder 中标记或识别约束,以便以后可以查找它们?
我想这样做的原因是我需要根据视觉指定的约束执行一些计算。我知道 Apple 提供了 Visual Format Language我可以在 Controller 中以编程方式指定约束。我宁愿不使用这种方法,所以我不会失去 IB 的设计时反馈。
制作引用 socket 确实有效,但问题仍然存在。
最佳答案
更新:
正如 Bartłomiej Semańczyk 在 his answer 中所解释的那样,现在 NSLayoutConstraint
的 Attributes Inspector 中有一个可见的 Identifier 字段,因此您不必自己公开该字段。只需在 Document Outline View 或 Storyboard View 中选择约束,然后在右侧的 Attributes Inspector 中添加标识符。
较早的答案:
是的,这是可以做到的。 NSLayoutConstraint
有一个名为 identifier
的属性,可以在 Interface Builder 中公开并分配。为了对此进行演示,我创建了一个单 View 应用程序,它有一个红色框 subview 。这个 subview 有 4 个约束:宽度、高度、在容器中水平居中、在容器中垂直居中。我通过执行以下操作为宽度约束提供了标识符 redBoxWidth
:
单击文档布局 View 中的宽度限制。然后在 User Defined Runtime Attributes 下的 Identity Inspector 中,单击 Key Path 下的 +
。将 keyPath 更改为 identifier,将 Type Boolean 更改为 String,并设置Value 到 redBoxWidth
。
然后在 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/
我是一名优秀的程序员,十分优秀!