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



问题是,当添加了太多的文本时,它会流到屏幕之外:

尽管有一个父级的UIView,它的前导和后继空间为12,但它仍然不尊重父视图。UILabel应该使文本大小更小,以适应所有文本,但它没有这样做。
怎样才能有这样一个居中的UILabel ,但仍然使它有一个最大的宽度,这样它就不会在屏幕之外流动?
发布于 2016-04-11 21:49:07
除非您特别确定这些约束应该是什么,否则UILabel不会受到父视图的约束。因此,默认情况下,它根本不考虑superview的前缘和后缘。
我建议从UILabel的父视图中添加一个宽度约束,该约束类型为“小于或等于”,其常数为0,乘数为0.85或其他合理值。这将使标签变得非常小,甚至零宽度,但不会让它超过其父视图宽度的85%。
发布于 2016-04-11 21:48:57
您需要设置行数、最小字体大小和adjustsFontSizeToFitWidth。
myLabel.numberOfLines = 1;
myLabel.minimumFontSize = 6;
myLabel.adjustsFontSizeToFitWidth = YES;如果仍然有太多的文本,您需要选择多行,剪辑文本,或者使用省略号。
对于多行,设置myLabel.numberOfLines = 0
若要剪辑文本,请设置myLabel.clipsToBounds = YES
若要用省略号截断,请设置myLabel.lineBreakMode = NSLineBreakByTruncatingTail
https://stackoverflow.com/questions/36559811
复制相似问题