gpt4 book ai didi

ios - 获取 NSLayoutConstraints 关联 View

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:15 26 4
gpt4 key购买 nike

我试图遍历 View 约束。

我向 view1 添加了:顶部、尾部、前导和高度约束。

top、trailing 和 leading 是主 ViewControllers View 。

如果我遍历 view1 的约束,我只会看到高度约束。

for constraint in view1.constraints {
print(constraint)
}

NSLayoutConstraint:0x6180000968a0 UIView:0x7fae6b409dd0.height == 146 (active)

所以我遍历了它的 super View 约束(ViewControllers 主视图),我得到了很多约束,其中一些与 view1 相关联。

for constraint in view1.superview?.constraints {
print(constraint)
}

NSLayoutConstraint:0x618000096670 H:|-(0)-[UIView:0x7fae6b409dd0] (active, names: '|':UIView:0x7fae6b40a180 )

NSLayoutConstraint:0x6180000974d0 H:[UIView:0x7fae6b409dd0]-(0)-| (active, names: '|':UIView:0x7fae6b40a180 )

NSLayoutConstraint:0x618000097520 V:|-(0)-[UIView:0x7fae6b409dd0] (active, names: '|':UIView:0x7fae6b40a180 )

还有一些我不关心的。

所以我的问题是我想循环遍历 view1 的所有超 View 约束并只获取与其关联的那些。

在此示例中,UIView:0x7fae6b409dd0 是 view1。

但我不知道如何获得该属性。

谢谢


如果我打印出 constraint.firstAnchor,我会得到一些更多的信息,但仍然无法得到相关的 View 。

NSLayoutXAxisAnchor:0x608000265480 "UIView:0x7fae6b409dd0.leading">

NSLayoutXAxisAnchor:0x608000265480 "UIView:0x7fae6b409dd0.trailing">

NSLayoutXAxisAnchor:0x608000265480 "UIView:0x7fae6b409dd0.top">

最佳答案

您可以使用NSLayoutConstraintfirstItemsecondItem 属性来获取与约束相关的 View 。请注意,secondItem 是一个可选的,必须展开。

然后可以使用===运算符来比较是否是同一个对象:

let constraints = view1.superview!.constraints
var count = 0

print("superview has \(constraints.count) constraints")

for constraint in constraints {
if constraint.firstItem === view1 {
count += 1
print(constraint)
} else if let secondItem = constraint.secondItem, secondItem === view1 {
count += 1
print(constraint)
}
}

print("\(count) of them relate to view1")

关于ios - 获取 NSLayoutConstraints 关联 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461550/

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