iOS-使用自动布局设置UILabel的最大宽度

iOS-使用自动布局设置UILabel的最大宽度,ios,uiview,autolayout,uilabel,Ios,Uiview,Autolayout,Uilabel,我有一个ui标签,包含在一个大小固定的ui视图中。ui标签具有动态文本。如何确保UILabel永远不会大于包含的UIView 在使用AutoLayout之前,只需使用AdjustsFontSizeToFitWidth即可实现这一点,但我无法再使用AutoLayout实现这一点 我应该从ui标签向ui视图添加哪些约束?现在它只是引导对齐。对于此类视图,有一些特殊的方法,如UILabel(contentHugging和contentCompressionResistance),但它们已经启用。所以,

我有一个
ui标签
,包含在一个大小固定的
ui视图
中。
ui标签
具有动态文本。如何确保
UILabel
永远不会大于包含的UIView

在使用
AutoLayout
之前,只需使用
AdjustsFontSizeToFitWidth
即可实现这一点,但我无法再使用AutoLayout实现这一点


我应该从
ui标签
ui视图
添加哪些约束?现在它只是引导对齐。

对于此类视图,有一些特殊的方法,如
UILabel
contentHugging
contentCompressionResistance
),但它们已经启用。所以,您只需禁用标签的宽度就可以增长到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];

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

在情节提要中,只需单击几下:

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

拖动标签并调整其大小以适应整个屏幕的宽度,可能会从两侧留下一些填充。 设置4个约束条件: 1) 标签的高度。 2) 要查看的顶部空间。 3) 引导空间到视图。 4) 要查看的尾随空间


最后将标签的水平压缩阻力优先级设置为1000。

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)

宽度你对这个问题的评论效果非常好,只有一件事:我如何调整UILabel的字体大小,使其符合我给它的最大宽度?myLabel.adjustsFontSizeToFitWidth=YES;myLabel.minimumScaleFactor=.5f;这对我有用!非常感谢,帖木儿