iPhone UILabel - 非破坏性空间

Mar*_*cin 29 iphone text uilabel ios

有没有办法在UILabel文本中使用非中断空格?

例如,我有2行标签和换行模式设置为自动换行.从数据库中读取此标签的内容,并将其存储为字符串.现在有时我的标签中的文字看起来像这样:

lorem ipsum some text
1
Run Code Online (Sandbox Code Playgroud)

但我想这样显示:

lorem ipsum some
text 1
Run Code Online (Sandbox Code Playgroud)

所以基本上,我需要在'text'和'1'之间强制不间断的空格.

我在这里找到了一些解决方案,但我认为在源代码文件中输入文本时它可以工作.在我的情况下,文本在数据库中.

有什么建议?

小智 48

使用不间断空格(\ u00a0)ex: @"hello**\u00a0**world!"

post.text = [postText stringByAppendingString: @"1\u00a0hour\u00a0ago."];
Run Code Online (Sandbox Code Playgroud)

U + 00A0 /不间断空间/公共分隔符,空间

来自:http://en.wikipedia.org/wiki/Whitespace_character

  • 为了在我的Localizable.strings文件中使用它,我必须使用全部大写:`\ U00A0`. (22认同)

Bar*_*zyk 32

对于Swift:

let sentence = "Barcelona, Real Madryt, Juventus Turyn, Bayern Monachium"
let sentencewithnbsp = String(map(sentence.generate()) {
    $0 == " " ? "\u{00a0}" : $0
})
Run Code Online (Sandbox Code Playgroud)

  • 也可以直接在字符串中使用`\ u {00a0}`而不使用`map`函数 - `lorem\u {00a0} ipsum` (5认同)

Gin*_*ino 10

如果要在.strings文件中使用它,可以键入OPTION + SPACE而不是常规空格.

.strings文件通常是UTF-8编码的,因此如果在Hex视图中打开它,您将看到"C2 A0"代替特殊空格字符.


ron*_*ory 10

Swift 4中,我不得不使用全部大写:\U00A0

例:

lorem ipsum some\U00A0text 1


SNR*_*SNR 1

在检查器中将标签的行数设置为 3 或 4 无论您需要什么然后内容将显示在多行中。