UILabel lineBreakMode,在特定字符处中断

时间:2013-05-09 10:00:30

标签: ios uilabel line-breaks

有没有办法打破UILabel中某个特定字符的文字说“;” ??

我不希望它被Word Wrap或字符Wrap打破。

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您可以使用(\r)代替换行符(\n)来创建换行符。

numberOfLines设置为0以允许任意数量的行。

yourLabel.numberOfLines = 0;

与您的情况类似,只需将;替换为;\n

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

string = [string stringByReplacingOccurrencesOfString:@";"
                                     withString:@";\n"];

答案 2 :(得分: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);

答案 3 :(得分:1)

还有另一种方法可以在有限的情况下使用。您可以用非中断空格(\ 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.

HOW:

对于InterfaceBuilder中的字符串:

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

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

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

答案 4 :(得分: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);