Swift:确定将对象NSLayoutConstraint应用于

时间:2018-12-04 18:25:56

标签: swift nslayoutconstraint

如果我有一个从self.view.constraints检索到的NSLayoutConstraint,是否有可能获得将约束应用于的对象? 编辑:要弄清我要做什么:将UILabel从屏幕外重新放置到屏幕上,然后更改该标签的内容

所以我有这个约束:

<NSLayoutConstraint:0x600000e337f0 'lblTeamFieldTop' V:[UILabel:0x7f9d5a826120' Add A Team']-(75)-[UILabel:0x7f9d5a8256f0'Team Name']   (active)>

我知道这是它应用于的标签:[UILabel:0x7f9d5a8256f0

有没有一种方法可以从约束中获取对该对象的引用?

对此进行更多扩展。以编程方式创建约束时,可以设置以下属性:

+ (instancetype)constraintWithItem:(id)view1 
                         attribute:(NSLayoutAttribute)attr1 
                         relatedBy:(NSLayoutRelation)relation 
                            toItem:(id)view2 
                         attribute:(NSLayoutAttribute)attr2 
                        multiplier:(CGFloat)multiplier 
                          constant:(CGFloat)c;

,但是WithItem和toItem似乎不是约束的可读属性。

我找到了,第一项目和第二项目。

编辑:以阐明我的解决方案。 fistitem和seconditem是NSLayoutConstraint的属性。例如,firstitem可能是Superview,而seconditem可能是您要与firstitem对齐的项目,例如UILabel。因此,在我的情况下,我正在寻找的UILabel是第二个项目(您可以在Storyboard中看到这些项目,只需单击NSLayoutConstraint并查看其信息面板)。我确实必须将其强制转换回UILabel,因为我认为NSLayoutConstraint将它们强制转换为Any。

0 个答案:

没有答案