接口构建器中的iOS多行标签


131

如何UILabel在iOS的界面构建器中制作多行?我尝试了UITextView但它并不完全符合我的需求。

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


您能解释为什么id无法满足您的需求吗?具有只读的TextView与多行标签相同。
Shreesh 2011年

似乎没有突出显示的文本颜色属性。
Samuli Lehtonen

7
对于其他访问此问题的人,请勿遵循将行设置为5或的公认答案n。而是将其设置为0(无穷大)。请在下面查看vijay的答案。
2014年

Answers:


178

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

您可以在代码中执行此操作:

textLabel.numberOfLines = 5 // for example

或在Interface Builder中:


我试过了,当我写标签时它可以工作,但是当我按Enter接受时,它就全部都一行了。
Samuli Lehtonen

3
width你的标签是什么?
2011年

8
好吧,我现在明白了,增加了高度,做到了。谢谢!
Samuli Lehtonen

您可以将Lines设置为0以表示无限制的行。
paulmelnikow

2
另请参
见此

117

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


2
谢谢,这就是我想要做的:)
mcont 2014年

这应该是解决方案!
SunnySonic

14
好一个。但是我猜“ Q”不是必需的
Rendel

1
@Oliver Logic不会退出Xcode ...您没有正确阅读。他说CONTROL + Q + ENTER(而不是CMD + Q)。但是Rendel在这里只需要CONTROL + ENTER就可以了。
gaskbr '16

1
@Logic不会退出Xcode ...您没有正确阅读。他说CONTROL + Q + ENTER(而不是CMD + Q)。但是Rendel在这里仅CONTROL + ENTER就足够了。
gaskbr '16

47

谢谢AppleVijay!

也可以调用sizeToFit,如下所示:

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

高度将自动计算。


11
注意:从iOS6开始不推荐使用UILineBreakModeWordWrap。使用[label setLineBreakMode:NSLineBreakWordWrapping]; 代替。
约翰·费根斯

5
缺少“按”。label.lineBreakMode = NSLineBreakByWordWrapping
user1872384 2014年

1
使用NSLineBreakMode.ByWordWrapping而不是UILineBreakModeWordWrap迅速
Deb

12

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

或与这样的代码一起使用

我找到了解决方案。

只需添加以下代码即可:

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

5

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

以编程方式(快速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

使用Inetrface Builder

在此处输入图片说明

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


2

行数在IB中可见,平原UILabels将行字段设置为0。它将根据标签提供的空间创建多行。


1

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


0
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};


0

我已经为此苦苦挣扎很长时间了。我只是希望标签文本出现在第二行。但是无论我做什么,都会溢出UILabel框。对我来说,更改大小检查器的自动调整大小是可行的。简单修复。

可能正在寻找类似的人会有所帮助。


-2

对于X-Code 7.2

  1. -选择UILabel

  2. -属性检查器

  3. -文字-选择归因

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

多行UILabel的X代码图像


行数在IB中使用纯UILabels是可见的。
Graham Lea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.