NSLayoutConstraint(自动布局)
添加
autoLayout
视图使用该方法
+(instancetype)constraintWithItem:(id)view1
attribute:(NSLayoutAttribute)attr1
relatedBy:(NSLayoutRelation)relation
toItem:(nullable id)view2
attribute:(NSLayoutAttribute)attr2
multiplier:(CGFloat)multiplier
constant:(CGFloat)c;
该方法实际上就是满足一个数学关系
第一个参数 view1: 要设置的视图;
第二个参数 attr1: view1要设置的属性,稍后详解;
第三个参数 relation: 视图view1和view2的指定属性之间的关系,稍后详解;
第四个参数 view2: 参照的视图;
第五个参数 attr2: 参照视图view2的属性,稍后详解;
第六个参数 multiplier: 视图view1的指定属性是参照视图view2制定属性的多少倍;
第七个参数 c: 视图view1的指定属性需要加的浮点数。
举个简单的例子来说我们想设置第一个视图的宽度是第二个视图宽度的2倍,我们可以这样写:
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeWidth multiplier: constant:]];
可以看到这里我们
item1是view1;
item2是view2;
attr1是attribute:NSLayoutAttributeWidth;
attr2是attribute:NSLayoutAttributeWidth;
relation是NSLayoutRelationEqual;
mutiplier 是2;
constant是0.
带入上面的公式得:
第一个视图(宽度) = 2 * 第二个视图(宽度) + 0
如下是我们所有可以控制的属性:
属性名 | 含义 |
---|---|
NSLayoutAttributeLeft | 视图的左边 |
NSLayoutAttributeRight | 视图的右边 |
NSLayoutAttributeTop | 视图的上边 |
NSLayoutAttributeBottom | 视图的下边 |
NSLayoutAttributeLeading | 视图的前边 |
NSLayoutAttributeTrailing | 视图的后边 |
NSLayoutAttributeWidth | 视图的宽度 |
NSLayoutAttributeHeight | 视图的高度 |
NSLayoutAttributeCenterX | 视图的中点的X值 |
NSLayoutAttributeCenterY | 视图中点的Y值 |
NSLayoutAttributeBaseline | 视图的基准线 |
NSLayoutAttributeNotAnAttribute | 无属性 |