Autolayout最大宽度,因此文本不会流出屏幕/视图

时间:2016-04-11 21:43:37

标签: ios autolayout

我的UILabel设置为Align Center X to SuperviewAlign Center Y to Superview。它没有宽度,因此可以根据文本的数量进行更改。一个小图标也需要位于文本的左侧:

enter image description here enter image description here

enter image description here

问题是,当添加太多文本时,它会流出屏幕:

enter image description here

即使有UIView是父级,其前导和尾随空格为12,但它仍然不尊重父视图。 UILabel应该使文字大小更小以适应所有文字,但它不会这样做。

我如何才能拥有这样的居中UILabel,但仍然使其具有最大宽度,以便它不会在屏幕外流动?

2 个答案:

答案 0 :(得分:2)

除非您明确确定这些约束应该是什么,否则UILabel不会被父视图约束。因此,默认情况下,它根本不考虑超级视图的前沿和后沿。

我建议将UILabel中的宽度约束添加到类型为" Less Than Or Equal"的父视图中。并且常数为0,乘数为0.85或其他合理值。这将使标签变得非常小甚至零宽度,但不会让它超过其父视图宽度的85%。

答案 1 :(得分:0)

您需要设置行数,最小字体大小和adjustsFontSizeToFitWidth

myLabel.numberOfLines = 1;
myLabel.minimumFontSize = 6;
myLabel.adjustsFontSizeToFitWidth = YES;

如果文字仍然太多,您需要使用多行,剪辑文本或使用省略号。

对于多行,请设置myLabel.numberOfLines = 0

要剪辑文字,请设置myLabel.clipsToBounds = YES

要使用省略号截断,请设置myLabel.lineBreakMode = NSLineBreakByTruncatingTail