在一个UILabel中,是否有可能强制一行不在某个地方中断

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

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

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

我通过在textFragment1的本地化法语文本中添加一个换行符号来暂时解决了这个问题。 虽然我不太喜欢这个解决scheme。 我想知道是否有办法处理textFragment2和textFragment3,以便他们将永远在一起在同一行。

你可以使用一个非空白的空格( \u00a0 )来jointextFragment2和textFragment3。 这个angular色看起来就像一个正常的空间 – 也就是说,它会产生相同数量的空白,但是在它的任何一边都不会发生换行。

您也可以使用零宽度空间( \u2060 )。 使用这个字符不会导致任何空格,但是它仍然可以防止任何一方的换行。 这是你想要的,如果你不想在textFragment2和textFragment3之间有任何空间的话,但是你仍然想阻止那里的分行。 (如果你在中间有一个连字符,但是你想防止这个连字符在连字符后被打破,这也是有用的。)

你可以在Wikipedia上阅读更多关于这些字符的信息 。