【问题标题】:\n not working in UIlabel\n 在 UIlabel 中不起作用
【发布时间】:2010-08-05 16:50:09
【问题描述】:

我在这里看到过类似的问题,但仍然可以弄清楚为什么它不起作用。

如何在多行 UIlabel 中添加换行符(即添加新段落)?

我有一个包含很多文字的标签,

lbl.numberOfLines = 0;
lbl.sizeToFit;

但我仍然得到这样的东西: "这里有一些文字\n这里我要换行"

谢谢

【问题讨论】:

  • 如何设置标签上的文字?我曾经遇到过这个问题,因为真正的字符串是@"some text\\nmore text"。
  • 不,我不在原始字符串中使用转义,我有一个反斜杠
  • AngeDeLaMort 是正确的。 IB 文本自动转义 \ 字符。请看我的回答。

标签: iphone objective-c newline uilabel


【解决方案1】:

这是一个老问题,但只是想让你知道\r 就像一个魅力:)

【讨论】:

    【解决方案2】:

    UILabel 不会尊重 \n,您可以使用 option-return(在界面生成器中)强制在您想要换行的位置。

    您可以使用 UIWebView 代替标签,然后您可以随意设置格式。 (并按照上面的 AngeDeLaMort 设置 lineBreakMode。)

    【讨论】:

    • 别忘了把行数设为0!
    • 这是不正确的! UILabel 会尊重 \n,但不会尊重 \\n(有充分的理由!):)
    • 对 UILabel 使用 UIWebview 就像在霰弹枪上的弹弓。更好地检查 numberOfLineslineBreakMode 属性。 \n 将换行并将内容放在下一个屏幕上。还要检查你的标签高度,如果你没有足够的空间,第二行会被剪掉。
    【解决方案3】:

    你可以试试这个:

    lbl.text = @"My \n label";
    lbl.numberofLines = 0;
    

    【讨论】:

      【解决方案4】:

      这应该有效:

      lbl.lineBreakMode = NSLineBreakByWordWrapping;
      lbl.numberOfLines = 0;
      

      【讨论】:

        【解决方案5】:

        实际上有一种方法可以做到这一点。试试

            unichar chr[1] = {'\n'};
        NSString *singleCR = [NSString stringWithCharacters:(const unichar *)chr length:1];
            [yourLabel setText:[NSString stringWithFormat:@"new%@line",singleCR]];
        

        【讨论】:

          【解决方案6】:

          您的问题可能不同...但我的问题是文字字符\n,实际上是内存中的\\n

          我解决了:

          label.text = [rawText stringByReplacingOccurrencesOfString@"\\n" withString:@"\n"];
          

          您仍然需要设置换行模式以及 numberOfLines 才能使其工作。

          【讨论】:

            【解决方案7】:

            如果你的字符串真的没问题,也许你也可以尝试添加这一行:

            lbl.lineBreakMode = UILineBreakModeWordWrap;
            

            【讨论】:

            • 对我来说,lbl.numberOfLines = 2; lbl.lineBreakMode = UILineBreakModeWordWrap; 工作。
            【解决方案8】:

            在storyboard中使用ctrl + Enter,将行数设为0

            【讨论】:

              【解决方案9】:

              我知道这是个老问题,但我想知道 - 问题可能是 lbl.sizeToFit; 吗?

              如果你可以设置像 CGRectMake(0,0,300,300) 这样的框架 - 这能解决问题吗?因为\n 在我这边工作。

              【讨论】:

                【解决方案10】:
                NSCharacterSet *charSet = NSCharacterSet.newlineCharacterSet;
                NSString *formatted = [[unformatted componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@"\n"];
                

                【讨论】:

                  【解决方案11】:

                  UILabel 使用 \n 换行。 \n 后面需要一个空格。

                  【讨论】:

                  • 后面不需要空格。
                  • 回答问题的时候举个例子会更有帮助。谢谢!
                  【解决方案12】:

                  这是一个老问题,但如果有人想从界面生成器中做,那么它很容易和简单

                  选择标签并将类型更改为attributed,默认为plain

                  现在无论你想去哪里\n只要使用Alt + Enter,你就会得到新的一行

                  希望对使用界面生成器的人有所帮助

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-11-06
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-04-14
                    • 1970-01-01
                    • 2015-01-19
                    • 1970-01-01
                    相关资源
                    最近更新 更多