我正在使用此答案中提供的代码来创建动态标签,它在大多数情况下都有效。但是,只要标签文本的长度超过 94 个字符,它就会被截断并添加省略号。
还有一件更奇怪的事情是,如果我在字符串中添加更多字符,它们就会显示出来,但最后两行仍然被截断。
例如。
字符串:
this is a very very long string
with lots of words to test the
dynamic bubble sizing one two three.
显示如下:
this is a very very long string
with lots of words to test the
dynamic bubble sizing one tw...
但是当我通过在标签中再次使用相同的句子来加倍字符串时,它会显示更多的文本,但仍然会截断它。
例如。
字符串:
this is a very very long string
with lots of words to test the
dynamic bubble sizing one two
three. this is a very very long
string with lots of words to test
the dynamic bubble sizing one
two three.
显示如下:
this is a very very long string
with lots of words to test the
dynamic bubble sizing one two
three. this is a very very long
string with lots of words to tes...
这是我正在使用的代码。
NSString *temp = [NSString stringWithFormat:@"this is a very very long string with lots of words to test the dynamic bubble sizing one two three"];
captionLabel.text = temp;
//Calculate the expected size based on the font and linebreak mode of your label
CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [temp sizeWithFont:captionLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:captionLabel.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = captionLabel.frame;
newFrame.size.height = expectedLabelSize.height;
captionLabel.frame = newFrame;
希望有人有一个想法,因为这让我摸不着头脑。
编辑
感谢@troolee,使用 captionLabel.frame.size.width 而不是硬编码的 296 修复了它,如果他/她选择创建答案,我会将其标记为正确。