如何为UILabel添加换行符?
让我看看我有一个字符串看起来像这样:
NSString *longStr = @"AAAAAnBBBBBnCCCCC";
我如何做到这一点,以便UILabel像这样显示消息
AAAAA
BBBBB
CCCCC
我不认为n
被UILabel识别,那么有什么我可以放在NSString中的,以便UILabel知道它必须在那里创建一个换行符?
正如您在字符串中使用的那样使用n
。
将numberOfLines设置为0以允许任意数量的行。
label.numberOfLines = 0;
使用sizeWithFont:
来更新标签框架以匹配文本的大小。 如果你不这样做,你的文本将被垂直居中或切断。
UILabel *label; // set frame to largest size you want
...
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);
更新:替换为弃用
sizeWithFont:constrainedToSize:lineBreakMode:
参考,替换为不推荐的sizeWithFont:在iOS 7中?
CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
在Interface Builder的小方框中输入以插入换行符( n)时使用选项返回。 在Interface Builder的标签属性中,设置#Lines = 0。
选择标签,然后像上图中那样将Lines属性更改为0,然后在字符串中使用 n作为换行符。
如果您从XML文件读取字符串,则此字符串中的换行符n
在UILabel
文本中不起作用。 n
未被解析为换行符。
这是解决这个问题的一个小技巧:
// correct next line n in string from XML file
NSString *myNewLineStr = @"n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"n" withString:myNewLineStr];
myLabel.text = myLabelText;
所以你必须在硬编码的NSString
中用解析的n
替换字符串中未解析的n
部分。
以下是我的其他标签设置:
myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor];
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
myLabel.textAlignment = UITextAlignmentCenter;
最重要的是将numberOfLines
设置为0
(=标签中的行数不限)。
不知道为什么苹果选择不解析n
从XML字符串读?
希望这可以帮助。
链接地址: http://www.djcxy.com/p/4833.html