В UILabel можно ли заставить строку НЕ ломаться в определенном месте
У меня есть UILabel, который должен быть длиной в две строки. Текст локализован на французский и английский языки.
Я устанавливаю свойство attributedText метки. Текст построен из трех добавленных строк, например textFragment1, textFragment2 и textFragment3. Средняя строка - это изображение, созданное с помощью NSTextAttachment.
Я хочу, чтобы textFragment2 и textFragment3 находились в одной строке. Первая строка может или не может быть завершена в зависимости от того, как долго она будет. Проблема в том, что мой французский текст в настоящее время довольно короткий, поэтому строка завершается после textFragment2.
Я исправил это временно, добавив символ прерывания строки в локализованном французском тексте для textFragment1. Я действительно не люблю это решение. Мне было интересно, есть ли способ обработать textFragment2 и textFragment3, чтобы они всегда были вместе в одной строке.
Ответы
Ответ 1
Вы можете использовать неразрывное пространство (\u00a0
) для объединения textFragment2 и textFragment3. Этот персонаж выглядит как нормальное пространство, т.е. это приводит к тому же количеству пробелов, но разрыв строки не будет происходить по обе стороны от него.
Вы также можете использовать пространство с нулевой шириной (\u2060
). Использование этого символа не приведет к каким-либо пробелам, но оно все равно предотвратит разрыв строки с обеих сторон. Это то, что вы хотите, если вам не нужно пространство между textFragment2 и textFragment3, но вы все равно хотите предотвратить разрыв строки. (Его также полезно, если у вас есть слово с дефисом посередине, но вы хотите, чтобы линия не была сломана после дефиса.)
Вы можете больше узнать об этих типах символов в Википедии.