我试图循环查看视图约束。
我添加到view1:top,trailing,leading和height constraints。
top,trailing和leading是ViewControllers的主视图。
如果我遍历view1的约束,我只能看到高度约束。
for constraint in view1.constraints {
print(constraint)
}
NSLayoutConstraint:0x6180000968a0 UIView:0x7fae6b409dd0.height == 146(有效)
所以我通过它的超视图约束(ViewControllers主视图)循环,我得到了很多约束,其中一些与view1相关联。
for constraint in view1.superview?.constraints {
print(constraint)
}
NSLayoutConstraint:0x618000096670 H:| - (0) - [UIView:0x7fae6b409dd0](有效,姓名:' |':UIView:0x7fae6b40a180)
NSLayoutConstraint:0x6180000974d0 H:[UIView:0x7fae6b409dd0] - (0) - | (活跃,姓名:' |':UIView:0x7fae6b40a180)
NSLayoutConstraint:0x618000097520 V:| - (0) - [UIView:0x7fae6b409dd0](有效,姓名:' |':UIView:0x7fae6b40a180)
我得到了一些我不在乎的东西。
所以我的问题是我想遍历所有view1的超级视图约束,并只得到与之关联的那些。
在此示例中,UIView:0x7fae6b409dd0
是view1。
但我无法弄清楚如何获得该财产。
由于
如果我打印出来constraint.firstAnchor
我会获得更多信息,但仍然无法获得相关视图。
NSLayoutXAxisAnchor:0x608000265480" UIView:0x7fae6b409dd0.leading">
NSLayoutXAxisAnchor:0x608000265480" UIView:0x7fae6b409dd0.trailing">
NSLayoutXAxisAnchor:0x608000265480" UIView:0x7fae6b409dd0.top">
答案 0 :(得分:1)
您可以使用firstItem
的{{1}}和secondItem
属性来获取与约束相关的视图。请注意,NSLayoutConstraint
是可选,必须解包。
然后您可以使用secondItem
运算符来比较它是否是同一个对象:
===
答案 1 :(得分:0)
一种简单的方法是比较约束对象中是否存在视图的哈希码:
[[NSString stringWithFormat:@"%@", constraint] containsString:[NSString stringWithFormat:@"%x", view.hash]]