有没有办法UILabel
在特定字符处打断文本说“;” ??
我不希望它被 Word Wrap 或 character Wrap 破坏。
当然,只需替换所有出现的“;” 在显示字符串之前使用 ";\n"。
还有另一种方法可以在有限的情况下工作。您可以用不间断空格 (\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。
您可以使用(\r)
而不是换行符(\n)
来创建换行符。
设置numberOfLines
为0
允许任意数量的行。
yourLabel.numberOfLines = 0;
就像你的情况一样,只需替换;
为;\n
NSString *string = @"This; is a; NSString";
string = [string stringByReplacingOccurrencesOfString:@";"
withString:@";\n"];
您不能使用;
此字符换行。如果你想换行然后用字符替换这个\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);
您可以使用换行符和换行符的组合。检查以下代码,
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);