使用步骤同手动添加约束保持一致
NSArray *blueHArr = [NSLayoutConstraint constraintsWithVisualFormat:
@"H:|-20-[blueView]-20-|"
options:kNilOptions
metrics:nil views:
NSDictionaryOfVariableBindings(blueView)];
constraintsWithVisualFormat
:这个方法返回了一个数组;"H:|-20-[blueView(100)]-20-|"
:这句话表明所添加的约束,H
的意思是水平方向添加约束,blueView 视图名称,(100)
代表着blueView 的宽为100
,blueView
距离父类的左边20,距离父类的右边是20;options
:是对其方式;metrics
:返回的是一个字典,它的意思是可以将约束中的值用某些字符串来代理,然后在这个字典中给多对应的字符串赋值,方便修改,并且增加可读性;views
:返回的也是一个字典,这个字典的意思是:你可以将前面的view用其他字符串来代替,在这里在给他赋给对应的view的名字。NSArray *blueHArr = [NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-aa-[cccc(100)]-20-|"
options:kNilOptions
metrics:@{@"aa":@20}
views:@{@"cccc":blueView}];
不支持乘除法
不能
这样写的:
NSArray *redVArr = [NSLayoutConstraint
constraintsWithVisualFormat:@"V:[blueView]-20-[redView(==blueView*0.5)]"
options:NSLayoutFormatAlignAllRight
metrics:nil
views:NSDictionaryOfVariableBindings(blueView, redView)];
原因就是这里包含了乘法,而一旦VFL语句中包含了乘除法
那么系统就会不识别而崩溃。NSLayoutConstraint *redWidth = [NSLayoutConstraint
constraintWithItem:redView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:blueView
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:0.0];
原文:http://www.cnblogs.com/developer-ios/p/4991073.html