在UILabel中,是否可以强行不要在某个地方打破一条线

时间:2014-08-19 21:01:12

标签: ios ios7 uilabel nsattributedstring nstextattachment

我有一个应该是两行长的UILabel。该文本已本地化为法语和英语。

我正在设置标签的attributedText属性。该文本由三个附加的字符串构成,例如textFragment1,textFragment2和textFragment3。中间字符串实际上是使用NSTextAttachment创建的图像。

我想确保textFragment2和textFragment3在同一行。第一个字符串可能会或可能不会换行,具体取决于它的长度。问题是我的法语文本目前很短,所以该行在textFragment2之后换行。

我通过在textFragment1的本地化法语文本中添加换行符来暂时解决此问题。我不喜欢这个解决方案。我想知道是否有办法处理textFragment2和textFragment3,以便它们将始终在同一行上。

1 个答案:

答案 0 :(得分:35)

您可以使用不间断的空格(\u00a0)来连接textFragment2和textFragment3。这个角色看起来就像一个普通的空间 - 即。它导致相同数量的空白 - 但不会在其两侧发生断线。

您还可以使用零宽度空间(\u2060)。使用此字符不会产生任何空格,但仍会阻止任何一方的断行。如果您不希望textFragment2和textFragment3之间有任何空格,但您仍希望防止在那里进行换行,那么这就是您想要的。 (如果你的中间有一个带连字符的单词,但是你想要阻止连字符后的行被破坏,这也很有用。)

您可以详细了解这些字符on Wikipedia