2

有没有办法UILabel在特定字符处打断文本说“;” ??

我不希望它被 Word Wrap 或 character Wrap 破坏。

4

5 回答 5

4

当然,只需替换所有出现的“;” 在显示字符串之前使用 ";\n"。

于 2013-05-09T10:02:01.900 回答
3

还有另一种方法可以在有限的情况下工作。您可以用不间断空格 (\U+00A0) 替换您的正常空格 (\U+0020)。这将允许您限制字符串中断的位置数。例如,如果您有一个类似的字符串;

I have a string with two sentences. I want it to preserve the sentences.

通过仔细使用不间断的空格,您可以让它像这样中断;

I have a string with two sentences. 
I want it to preserve the sentences.

如何:

对于 InterfaceBuilder 中的字符串:

转到系统偏好设置-> 键盘-> 输入源-> + 选择类别“其他”和键盘“Unicode 十六进制输入”选择“添加”确保选择“在菜单栏中显示输入法”。关闭系统偏好

返回 XCode 并找到您的字符串 使用菜单栏中的键盘菜单,选择 Unicode 键盘 在您的字符串中选择一个空格。键入选项+00a0。当您完成 4 位序列时,将出现一个空格。那个空间是一个不间断的空间。对您需要的所有空间重复此操作。

对于编程字符串,您可以根据需要添加 \U00A0。

于 2018-03-22T03:50:32.820 回答
2

您可以使用(\r)而不是换行符(\n)来创建换行符。

设置numberOfLines0允许任意数量的行。

yourLabel.numberOfLines = 0;

就像你的情况一样,只需替换;;\n

NSString *string = @"This; is a; NSString";

string = [string stringByReplacingOccurrencesOfString:@";"
                                     withString:@";\n"];
于 2013-05-09T10:09:48.167 回答
1

您不能使用;此字符换行。如果你想换行然后用字符替换这个\n字符。

label.text=[label.text stringByReplacingOccurrencesOfString:@";" withString:@"\n"];

和做

label.numberOfLines = 0.

并更新标签框

CGSize labelSize = [label.text sizeWithFont:label.font  constrainedToSize:label.frame.size lineBreakMode:label.lineBreakMode];

label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);
于 2013-05-09T10:09:46.227 回答
0

您可以使用换行符和换行符的组合。检查以下代码,

self.testLabel.text = @"abc;\nabc;";

self.testLabel.numberOfLines = 0;

CGSize labelSize = [self.testLabel.text sizeWithFont:self.testLabel.font
                          constrainedToSize:self.testLabel.frame.size
                              lineBreakMode:self.testLabel.lineBreakMode];

self.testLabel.frame = CGRectMake(
                         self.testLabel.frame.origin.x, self.testLabel.frame.origin.y,
                         labelSize.width, labelSize.height);
于 2013-05-09T10:12:56.523 回答