界面生成器中的 iOS 多行标签

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

或与这样的代码一起使用

我找到了解决办法。

只需添加以下代码:

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

【讨论】:

【参考方案2】:

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

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

textLabel.numberOfLines = 5 // for example

或者在界面生成器中:

【讨论】:

我试过了,当我写标签的时候它可以工作,但是当我按回车接受它时,一切都在一行上。 你的标签的width 是什么? 好的,我现在明白了,增加高度,成功了。谢谢! 您可以将 Lines 设置为 0 以实现无限行。 另请参阅解释如何在 IB 中键入多行标签的答案:***.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

    --选择UILabel

    -- 属性检查器

    -- 文本 - 选择属性

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

【讨论】:

行数在 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 框。对我来说,改变尺寸检查器中的自动调整大小是有效的。简单的修复。

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

【讨论】:

以上是关于界面生成器中的 iOS 多行标签的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 动态类型和界面生成器

使用 xcode 5 界面生成器设置标签栏色调(背景)颜色

使用 XIB(界面生成器)在 iOS 中进行本地化

将图标与多行 UILabel 的左上角对齐

界面生成器中的自动布局高度 >= 0 帧

界面生成器中的 iOS 阴影视图