如何让这个UILabel将电子邮件地址移动到下一行?

时间:2014-08-19 22:19:05

标签: ios nsstring uilabel line-breaks

我有一个简单的UILabel打印文本如下:

John Doe sent a message to blahblah-
blah@blahblah.com

因此,此处的电子邮件地址:blahblah-blah@blahblah.com正在剪切并部分显示在下一行。我需要做什么才能将其显示为:

John Doe sent a message to 
blahblah-blah@blahblah.com    

我已经拥有以下内容:

self.mailLabel.lineBreakMode = NSLineBreakModeByWordWrapping;
self.mailLabel.numberOfLines = 0;

有问题的字符串是:

[NSString stringWithFormat:@"You sent a message to %@", emailAddress];

我该怎么办?请记住,名称可能很长,因此,在字符串中添加换行符不会起作用,因为我不想要以下情况:

Jonathon Dawson sent a message
to 
blahblah-blah@blahblah.com   

应该是

Jonathon Dawson sent a message
to blahblah-blah@blahblah.com   

2 个答案:

答案 0 :(得分:1)

self.mailLabel = [NSString StringWithFormat:@"You sent a message to\n%@"];

使用\ n创建新行。 另外,请确保在标签上将numberOfLines设置为2.

答案 1 :(得分:0)

您需要在 - (连字符,又名短划线)符号的左侧和右侧添加 ZWNBSP (零宽度不间断空格)字符:

self.mailLabel.text = [self.mailLabel.text stringByReplacingOccurrencesOfString:@"-" withString:@"\u2060-\u2060"];

<强>说明:

U + 2060 - 零宽度不间断空格Unicode字符可防止任何可能是插入器的换行符在其前后换行。只要UILabel(以及Cocoa中的其他文本控件)尊重Unicode,您就会获得没有不希望的换行符的文本。

维基百科链接:http://en.wikipedia.org/wiki/Zero-width_no-break_space