也分配一个最小尺寸约束view2
,否则“0 宽度”将是约束的有效解决方案。
[NSLayoutConstraint activateConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[view1(>=minSize)]-8-[view2(>=minSize)]-8-|"
options:0
metrics:@{@"minSize" : @50}
views:views]];
另外,不要再使用addConstraints:
(iOS 8+)。使用-[NSLayoutConstraint setActive:]
或+[NSLayoutConstraint activateConstraints:]
至于改变view2
's 的大小,你不能在使用 Auto Layout 时直接设置视图的框架。该值将在下一次布局传递中被覆盖。您应该为视图创建显式宽度约束:
[NSLayoutConstraint constraintWithItem:view2
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:120];
然后在需要更改视图大小时调整该约束的常量。