ios - 以编程方式访问自动布局约束

标签 ios objective-c constraints autolayout

我有一个有很多 subview 的 View ,我将这些 View 称为父 View 、 subview A、 subview B、 subview C 等。

因此我需要访问我在 subview A 上设置的尾随空间约束以对其进行 super View 和修改。该约束将出现在 superview.constraints 中。

但是,所有 subview 都在它们和父 View 之间设置了前导/尾随空间限制。

所以,如果我记录 superview.constraints,它看起来像这样:

<__NSArrayM 0xac744e0>(
<NSLayoutConstraint:0x98f3500 H:|-(0)-[UILabel:0x98f2190]   (Names:     '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3540 H:[UILabel:0x98f2190]-(20)-|   (Names:   '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3580 V:[UILabel:0x98f2190]-(-4)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f35c0 V:[UIView:0x98f2770]-(42)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3600 H:[UIView:0x98f2770]-(20)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3640 H:|-(0)-[UIView:0x98f2770]   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3680 H:|-(0)-[UIView:0x98f2610]   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f36c0 H:[UIView:0x98f2610]-(0)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3700 V:[UIView:0x98f2610]-(1)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3740 V:[UIView:0x98f2920]-(107)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3780 H:[UIView:0x98f2920]-(20)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f37c0 H:|-(0)-[UIView:0x98f2920]   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3800 H:[UIButton:0x98f19c0]-(178)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3840 V:[UIButton:0x98f19c0]-(55)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3880 H:|-(0)-[UILabel:0x98f2a80]   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f38c0 V:[UILabel:0x98f2a80]-(109)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3900 H:[UILabel:0x98f2a80]-(20)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3940 H:|-(171)-[UIButton:0x98f2ff0]   (Names: '|':HeaderReusableView:0x98f1f40 )>,
<NSLayoutConstraint:0x98f3980 V:[UIButton:0x98f2ff0]-(55)-|   (Names: '|':HeaderReusableView:0x98f1f40 )>

)

我不知道我想要哪种约束。

最佳答案

好吧,我明白了。 NSLayoutConstraint 有一个名为 firstItem 的属性和一个名为 secondItem 的属性。这些是设置约束的 View 。

通常 secondItem 是 View 本身。因此,view.constraints[0].secondItem 是 View 。

关于ios - 以编程方式访问自动布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20572148/

相关文章:

ios - 在 native iOS 应用程序中使用 Facebook SDK 邀请多个 friend

objective-c - 在ios中打开视频到时间偏移

iphone - appstore提交前获取苹果软件id号(适用于Appirater)

ios - 隐藏带有约束和动画的 View

sql - 如何检查oracle sql中的非空列约束?

iOS 基于位置的点对点通信方法

iOS:如何知道 reloadData() 已完成其任务?

swift - 自定义 UITableViewCell 的布局约束不起作用

ios - UIButtons 不粘在 UIView 边缘

ios - 无法创建托管对象的子类