UILabel截断多行标签中的中间行

时间:2013-10-10 22:11:57

标签: ios objective-c uilabel

我有一个最多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行和截断第3行,我真正希望它截断第1行。这样,任何太长而不适合指定宽度的行都将被截断并且不会被包装。

有没有办法实现这个目标?

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

编辑:

为了更清楚,以下是上面的示例代码标签的样子:

Line
11111111111111
Line 2...

以下是我希望它的样子:

Line 11111111111...
Line 2
Line 3

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您做对了。您只需要另一行。

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