UILabel-自动换行文字


150

有什么方法可以根据需要设置标签自动换行文字吗?我已将换行符设置为自动换行,并且标签的高度足以容纳两行,但看来它只会在换行符上换行。我是否必须添加换行符以使其正确包装?我只是希望它不能在水平方向上包装。

Answers:


301

如果设置numberOfLines为0(标签设置为自动换行),则标签将自动换行并根据需要使用任意多的行。

如果您正在UILabelIB中编辑,则可以通过按option+ return 获取多行文本来输入多行文本- return仅靠一行即可完成编辑。


124
为了澄清像我这样的菜鸟,这将是:cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
布莱恩·莫斯考

46
在iOS 6及更高版本中,请使用NSLineBreakByWordWrapping,而不要使用UILineBreakModeWordWrap
亚伦·布拉格

3
您可能还需要以下内容:label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
威廉·格兰德

6
label.lineBreakMode = .ByWordWrapping并且 label.numberOfLines = 0迅速
AFraser 2015年

9
对于像我这样不那么明显的任何人:UILabel的宽度必须有某种限制(无论是实际宽度限制还是边距限制);否则就不会包装。
jcady

27

UILabel具有lineBreakMode可根据需要设置的属性。


11
“我将换行符设置为自动换行”。这只会在实际的换行符上换行,一旦变长,它不会自动换行。
Codezy

19

在Swift中,您可以这样做:

    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.numberOfLines = 0

(请注意,lineBreakMode常量的工作方式与ObjC中的不同)


想详细说明它的不同之处吗?
迈克(Mike)

我想我的意思是命名是不同的。swift3
Nathan

换行模式应默认设置为自动换行
MobileMon

@MobileMonin我的经验并非总是如此。也许IB在某些情况下会改变它?
弥敦道

label.lineBreakMode = Obj C中的NSLineBreakByWordWrapping
Nupur Sharma

2

Xcode 10,Swift 4

也可以通过选择“标签”并使用“属性”检查器在情节提要上为标签包裹文本。

= 0 LINEBREAK = 自动换行

在此处输入图片说明


2
使用branBrand-New标签,将其直接添加到视图中,尽管将行设置为0并将换行符设置为Word Wrap,但仍然为我生成了单行标签(宽度大于电话宽度)。是否需要其他设置?我需要附加代码吗?
phihag
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.