iOS - 使用Autolayout为UILabel设置最大宽度

时间:2015-12-04 12:41:52

标签: ios uiview autolayout uilabel

UILabel中包含UIView,其大小固定。 UILabel包含动态文字。如何确保UILabel永远不会比包含的UIView更大?

在使用AutoLayout之前,只需使用AdjustsFontSizeToFitWidth即可轻松实现,但我无法再使用Autolayout了。

我应该从UILabel添加到UIView哪些约束?现在它只是领先对齐。

4 个答案:

答案 0 :(得分:4)

此类视图有一些特殊方法,例如UILabelcontentHuggingcontentCompressionResistance),但它们已经启用。所以你需要禁用标签的宽度增长到superview的宽度。

NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self.label.superview attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0.0f];    
[self.label addConstraint:widthConstraint];

答案 1 :(得分:0)

我将添加左,上,右约束如下:

enter image description here

在故事板中,只需点击几下即可:

  • 选择标签
  • 在添加约束面板(右下角)中,选择要添加的约束

enter image description here

答案 2 :(得分:0)

拖动并调整标签大小以适应整个屏幕宽度,可能会从两侧留下一些填充物。 设置4个约束: 1)标签的高度。 2)UIView的顶层空间。 3)领导UIView的空间。 4)UIView的尾随空间。

最后将Label的horizo​​ntalcompressionResistense优先级设为1000。

答案 3 :(得分:0)

Swift 3和4

var widthConstraint = NSLayoutConstraint(item: label, attribute: .width, relatedBy: .lessThanOrEqual, toItem: label.superview, attribute: .width, multiplier: 1.0, constant: 0.0)
label.addConstraint(widthConstraint)