界面生成器中的 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 多行标签的主要内容,如果未能解决你的问题,请参考以下文章