如何在iOS中实现多行UILabel?

35

我动态地填充标题(UILabel),有时它会太长,IOS会压缩字体来适应宽度。是否有一种方法可以使用相同的字体大小来实现多行文本?

4个回答

79
adjustsFontSizeToFitWidth 设置为 NO,将 numberOfLines 设置为 0。

numberOfLines 文档

该属性控制要使用的最大行数,以便将标签文本适合其边界矩形。该属性的默认值为1。为了取消任何最大限制并使用所需数量的行,请将此属性的值设置为0。

如果使用此属性约束文本,则未适合最大行数和标签边界矩形内的任何文本都会使用适当的换行模式截断。

当使用 sizeToFit 方法调整接收器的大小时,调整考虑存储在此属性中的值。例如,如果将此属性设置为3,则sizeToFit 方法调整接收器的大小,使其足够大以显示三行文本。

您还可以指定 lineBreakMode,除非默认的 UILineBreakModeWordWrap 适合您想要的内容。


2
值得注意的是,UILineBreakModeWordWrap 自 iOS 6.0 起已被弃用,应使用 NSLineBreakByWordWrapping 进行替代。 - mwfire
4
不需要将adjustsFontSizeToFitWidth设置为“NO” - 默认值是“NO” - Hemang

6

请按以下方式使用UILabel属性:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;  
textLabel.numberOfLines = 0;

4

是的,您可以在代码中将numberOfLines设置为0,并将.lineBreakMode设置为UILineBreakModeWordWrap,或者如果您的标签在IB中定义,则使用相应的等效方法。


2
我刚刚使用了LineBreak模式来截取尾部,并将setNumberOfLines设置为0,现在我的标签是多行的。

将自动缩小设置为最小字体大小,并检查紧缩字母间距。 - Waqas
这是必要的!自动换行不会做到,您必须设置截断模式。 - Jonathan Crooke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接