【问题标题】:iOS multiline label in Interface builder界面生成器中的 iOS 多行标签
【发布时间】:2011-09-27 07:13:17
【问题描述】:

如何在 iOS 的界面生成器中创建多行 UILabel?我尝试了UITextView,但它不太适合我的需要。

如何在标签中添加多行(文本)?

【问题讨论】:

  • 您能解释一下为什么 id 不能满足您的需求吗?只读的 TextView 与多行标签相同。
  • 似乎没有高亮文本颜色属性。
  • 对于其他访问此问题的人,请不要遵循将行设置为 5 或 n 的公认答案。而是将其设置为 0(无穷大)。在下面查看 vijay 的答案。

标签: ios objective-c swift uilabel line-breaks


【解决方案1】:

将标签的宽度设置为小,然后使用 IB 将换行符设置为自动换行

或与这样的代码一起使用

我找到了解决办法。

只需添加以下代码:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

【讨论】:

    【解决方案2】:

    您可以使用numberOfLines 属性来定义标签可以拥有的最大 行数。默认情况下,它是1。将其设置为0 意味着标签将有无限行

    你可以在代码中做到这一点:

    textLabel.numberOfLines = 5 // for example
    

    或者在界面生成器中:

    【讨论】:

    • 我试过了,当我写标签的时候它可以工作,但是当我按回车接受它时,一切都在一行上。
    • 你的标签的width 是什么?
    • 好的,我现在明白了,增加高度,成功了。谢谢!
    • 您可以将 Lines 设置为 0 以实现无限行。
    • 另请参阅解释如何在 IB 中键入多行标签的答案:stackoverflow.com/a/992511/893113
    【解决方案3】:

    感谢 AppleVijay!

    也可以调用sizeToFit,像这样:

    label.lineBreakMode = UILineBreakModeWordWrap;
    label.numberOfLines = 0;
    [label sizeToFit];
    

    高度将自动计算。

    【讨论】:

    • 注意:UILineBreakModeWordWrap 自 iOS6 起已弃用。使用 [标签 setLineBreakMode:NSLineBreakWordWrapping];而是。
    • 缺少“作者”。 label.lineBreakMode = NSLineBreakByWordWrapping
    • 使用 NSLineBreakMode.ByWordWrapping 代替 UILineBreakModeWordWrap 快速
    【解决方案4】:

    点击 Control+Enter 在 Interface Builder/Storyboard 的 UILabel 中添加一行。

    【讨论】:

    • 谢谢,这就是我想要做的:)
    • 这应该是解决方案!
    • 不错的一个。但我猜“Q”不是必需的
    • @Oliver Logic 它没有退出 Xcode...您没有正确阅读。他说的是 CONTROL+Q+ENTER(而不是 CMD+Q)。但是 Rendel 是对的,这里只有 CONTROL+ENTER 就足够了。
    • @Logic 它没有退出 Xcode... 你没有正确阅读。他说的是 CONTROL+Q+ENTER(而不是 CMD+Q)。但是 Rendel 是对的,这里只有 CONTROL+ENTER 就足够了。
    【解决方案5】:

    在 iOS7 (Xcode5) 中,您应该将 UILabel 的行设置为 0 以在情节提要中进行无限多输入。
    最重要的是设置height of the UILabel可以容纳你要设置的输入行。

    【讨论】:

      【解决方案6】:
      textLabel.lineBreakMode = UILineBreakModeWordWrap;
      
      textLabel.numberOfLines = 0;
      
      CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                           lineBreakMode:NSLineBreakByTruncatingTail];
      
      textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};
      

      【讨论】:

        【解决方案7】:

        对于 X-Code 7.2

        1. --选择UILabel

        2. -- 属性检查器

        3. -- 文本 - 选择属性

        在此之后,您可以看到更多可以添加到标签中的属性,您还可以在其中找到行数。这使您的标签多行

        【讨论】:

        • 行数在 IB 中用普通 UILabel 可见。
        【解决方案8】:

        将动态文本信息的行数设置为零,这在您的文本变化时很有用。

        以编程方式 (Swift 3)

        var label = UILabel()
        let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
        label.text = stringValue
        label.numberOfLines = 0 // Set 0, if number of lines not specified.
        label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
        label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame
        

        使用 Innetrface Builder

        注意:不需要设置Minimum Font Scale,但最好有一个最小比例因子以使文本适合标签框架。

        【讨论】:

        • 如何根据其中的文字使标签高度可变?
        • @Renascent - 'Autoshrink' 下拉列表中有另一个值 - 最小字体大小,这可能会解决您的问题。
        【解决方案9】:

        如果将 numberOfLines 属性设置为 0,标签将自动调整为给定文本所需的行数。

        【讨论】:

          【解决方案10】:

          在 IB 中可以看到带有普通 UILabel 的行数 将行字段设置为 0 。它将根据为标签提供的空间创建多行。

          【讨论】:

            【解决方案11】:

            我已经为此苦苦挣扎了很长时间。 我只是想让我的标签文本出现在第二行。但无论我做什么,它只会溢出 UILabel 框。对我来说,改变尺寸检查器中的自动调整大小是有效的。简单的修复。

            对于正在寻找类似内容的人来说,可能会有帮助。

            【讨论】:

              猜你喜欢
              • 2014-08-14
              • 2020-04-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多