【发布时间】:2017-05-18 14:38:33
【问题描述】:
我试图遍历视图约束。
我添加到 view1:顶部、尾部、前导和高度约束。
top、trailing 和leading 指向主 ViewControllers 视图。
如果我遍历 view1 的约束,我只会看到高度约束。
for constraint in view1.constraints {
print(constraint)
}
NSLayoutConstraint:0x6180000968a0 UIView:0x7fae6b409dd0.height == 146(活动)
所以我遍历了它的 superviews 约束(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">
【问题讨论】:
-
使用 NSLayoutConstraint 类的 firstItem 和 secondItem 属性进行过滤。
-
@NareshReddyM 我如何从中获得视图?第一项/第二项是 AnyObject
-
谢谢,constraint.firstItem.isDescendant(of: view1) 这对我有用:themainthread.com/blog/2013/05/…
标签: ios swift uiview autolayout nslayoutconstraint