Есть ли способ использовать неразрывные пробелы в UILabel на экране запуска?

Я хотел бы убедиться, что имена в многострочной строке авторских прав на экране запуска не разделяются на разрывы строк на разных устройствах. Внутри контроллера представления с UILabel выходом textLabel escape-последовательность "\u{00a0}" работает программно:

textLabel.text = "Lots of text before... Firstname\u{00a0}Lastname... and after."

Он отображает строку с escape-последовательностью, замененной пробелом, и слова с обеих сторон всегда появляются в одной строке.

Однако я не могу заставить его работать, помещая его в качестве значения в UILabel в Interface Builder - либо в LaunchScreen, либо в любом другом контроллере представления. Он просто отображает строку с кодами, оставленными в том виде, в каком они были введены. Я пробовал все различные комбинации \ u, \ U, \\ u, \\ U, \ x + и т.д., предложенные в нескольких вопросах SO, но безрезультатно. Думаю программно вмешаться в отображение стартового экрана невозможно.

Я что-то упустил?


person Nick    schedule 22.04.2019    source источник


Ответы (1)


Не используйте \u{00a0} в тексте, который вы вводите в раскадровку. Введите фактический неразрывный пробел. Самый простой способ - ввести ⌥-пробел (option-space).

Если вам когда-либо понадобится ввести какие-либо другие специальные символы, другой вариант - использовать стандартную программу просмотра символов. Выберите «Эмодзи и символы» в меню «Правка», чтобы открыть Средство просмотра персонажей. Затем найдите нужный символ, который вы хотите поместить в метку. Вы также можете сделать это в коде Swift вместо того, чтобы вводить загадочные escape-последовательности Unicode в свои строки.

person rmaddy    schedule 22.04.2019