3

我有一个最多 3 行的 UILabel。这是代码:

_testLabel = [[UILabel alloc] init];
_testLabel.text = @"Line 11111111111111\nLine 2\nLine 3";
_testLabel.numberOfLines = 3;
_testLabel.lineBreakMode = NSLineBreakByTruncatingTail;
[_testLabel sizeToFit];
_testLabel.width -= 5;

通过调用 sizeToFit 然后减去 5,我使第 1 行换行。这反过来又将第 3 行推到了允许的范围之外,因此在“第 2 行”的末尾有一个“...”并且第 3 行没有显示。

我真正希望它截断第 1 行,而不是换行第 1 行和截断第 3 行。这样,任何太长而无法适应指定宽度的行都将被截断而不是换行。

有没有办法做到这一点?

我能想到的最好的方法是在每个 '\n' 字符处拆分字符串,并为每一行设置一个单独的 UILabel,每个行的 numberOfLines 设置为 1。

编辑:

更清楚地说,这是上面示例代码中标签的样子:

Line
11111111111111
Line 2...

这是我希望它看起来的样子:

Line 11111111111...
Line 2
Line 3
4

3 回答 3

0

您可能想在设置文本之前计算 UILabel 的大小,然后调整换行符设置。

参见 NSString 的方法: - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

于 2013-10-11T01:14:12.590 回答
0

你做对了。您只需要另一条线路。

将“adjustsFontSizeToFitWidth”设置为“false”,以防止标签通过更改字体大小来适应宽度。

于 2020-05-03T09:24:48.677 回答