我的UILabel
设置为Align Center X to Superview
和Align Center Y to Superview
。它没有宽度,因此可以根据文本的数量进行更改。一个小图标也需要位于文本的左侧:
问题是,当添加太多文本时,它会流出屏幕:
即使有UIView
是父级,其前导和尾随空格为12,但它仍然不尊重父视图。 UILabel
应该使文字大小更小以适应所有文字,但它不会这样做。
我如何才能拥有这样的居中UILabel
,但仍然使其具有最大宽度,以便它不会在屏幕外流动?
答案 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