在UILabel中,是否可以强制线不要在某个地方中断

Dar*_*ren 15 nsattributedstring uilabel nstextattachment ios ios7

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

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

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

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

bde*_*ham 36

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

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

您可以在维基百科上阅读有关这些角色的更多信息.

  • 为了在我的Localizable.strings文件中使用它,我必须使用全部大写:`\ U00A0` (13认同)
  • @BartłomiejSemańczyk在Swift中它会是"\ u {A0}". (7认同)