我有一个最多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
答案 0 :(得分:0)
检查枚举器是否有NSLineBreakMode
答案 1 :(得分:0)
您可能希望在设置文本之前计算UILabel的大小,然后调整换行符设置。
参见NSString的方法:
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
答案 2 :(得分:0)
您做对了。您只需要另一行。
将“ adjustsFontSizeToFitWidth”设置为“ false”,以防止标签通过更改字体大小而适合宽度。