我已使用像这样的可视格式以编程方式设置我的约束
[[self contentView] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label1]-(==space1@1000)-[label2]-(>=space2@750)-|" options:0 metrics:metricsDictionary views:viewDictionary]];
由于我需要[self contentView]
和label1
之间的前导空格是动态的,我创建了一个属性并将其初始化为
[self setLeadingConstraint:[NSLayoutConstraint
constraintWithItem:[self label1]
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:[self contentView]
attribute:NSLayoutAttributeLeading
multiplier:1.0f constant:kLeadingSpace]];
我将所有约束添加到[self contentView]
,到目前为止工作正常。
这是标签1为长字符串时的外观
这是标签1是短字符串时的样子
现在我需要将尾随空格作为前导空格动态,所以我尝试了相同的初始化视觉格式约束变量尾随约束,如下所示
[[self contentView] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label1]-(==space1@1000)-[label2]" options:0 metrics:metricsDictionary views:viewDictionary]];
[self setTrailingSpaceConstraint:[NSLayoutConstraint
constraintWithItem:[self label2]
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:[self contentView]
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:kTrailingSpace]];
这次没有正确设置尾随约束,因为图像显示