在StoryBoard上使用\ n在UILabel上的奇怪行为

时间:2017-06-06 08:27:33

标签: ios swift xcode storyboard uilabel

我想在UILabel上添加换行符。在使用\n的故事板上根本不起作用。 这是一个例子。

添加标签

在StoryBoard上我创建了2 UILabel并将其内容设置在专用字段中:

  1. Label 1\nhello,其中\n由ALT + RETURN
  2. 创建

    UILabel 1

    1. Label 2\nhello带有明确的\n
    2. UILabel 2

      1. 然后我添加了第三个标签并在控制器上配置它,而不是在Story Board上配置:

        label3.numberOfLines = 0 label3.text =" Label3 \ nhello"

      2. 上下文

        这是一个全新的项目,在Xcode 8上。语言是Swift 3.1,而AutoLayout是关闭的。因此,不得有任何外部库的任何干扰,也不得有AutoLayout。

        结果

        这是渲染。

        Result

        结论

        如果在StoryBoard或代码源上使用,

        UILabel行为是不一样的,这真的很令人不安。当然,当你面对并解决了这个问题时,一切似乎都是明确的,因为答案是众所周知的。

        使用UITextView代替UILabel可以轻松解决此问题。至于现在,直到我更喜欢使用UITextView在多行上显示简单文本,尽管UILabel必须为此目的而工作。

3 个答案:

答案 0 :(得分:5)

在UILabels中你根本无法使用

  

\ n

你必须使用

  

Alt + Enter

转到下一行。

答案 1 :(得分:1)

回车符(\ n)与字符\ n之间存在差异。单数字符\ n是回车符,正如您所看到的那样分割线。然而这两个角色\& n只代表两个不同的角色。

在Interface Builder中执行故事板时,输入UILabel的字符都被计为单个字符,因此如果键入\ n,则实际输入字符'\'和字符'n'。要输入特殊的单回车字符(\ n),您必须使用ALT + RETURN。

现在在代码中你可以更灵活。输入类似“Line1 \ nLine2”的文本时,\ n被视为单个回车符,因此输入字符'\'和& 'n'彼此相邻,你必须使用“Line1 \ nLine2”(双\表示单个'\'字符)。

因此,当它工作时,您将获得字符串中的单个回车字符(\ n),当它没有时,您将获得两个单独的字符。

你没有提到\ n如何在它不起作用时添加(在故事板之外),但它必须作为两个单独的字符添加到字符串中。

举个例子:

let str1 = "12345\n67890
let str2 = "12345\\n67890
print (str1.characters.count) // prints 11
print (str2.characters.count) // prints 12

答案 2 :(得分:0)

在 UILabels 中你根本不能使用

<块引用>

\n

你必须使用

<块引用>

Option + Enter

转到下一行。