考虑以下所需的布局。请注意,这不是“布局字符串”,而是图片的代理。所以| = 超级视图边缘,- = 空间,[xxx] = 视图。
|--[label1]--[label2--------------]--[按钮]--|
上面的布局是我想要实现的。用英语讲:
label1
大小以适合内容并从超级视图的边缘填充label2
从边缘填充label1
并根据可用水平空间扩展/收缩button
大小适合内容,并从label2
父视图的边缘和右边缘填充
我希望这很清楚。我当前的约束定义为:
[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-8-[label1]-4-[label2]-4-[button]-8-|"
options:0
metrics:nil
views:views];
这导致以下布局:
|--[label1----------]--[label2]--[按钮]--|
问题:如何修改约束,使其label2
按比例调整大小并label
调整button
大小以适合内容?
- 编辑 -
如果有帮助,这里是创建上述示例生成的约束的等效代码。
NSLayoutConstraint *c1 = [NSLayoutConstraint
constraintWithItem:self.label1
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:8.0f];
NSLayoutConstraint *c2 = [NSLayoutConstraint
constraintWithItem:self.label2
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.label1
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:4.0f];
NSLayoutConstraint *c3 = [NSLayoutConstraint
constraintWithItem:self.button
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.label2
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:4.0f];
NSLayoutConstraint *c4 = [NSLayoutConstraint
constraintWithItem:self
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.button
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:8.0f];