numberOfLines=2 的 UILabel 使用啥约束高度? (使用 [NSString sizeWithFont...])

Posted

技术标签:

【中文标题】numberOfLines=2 的 UILabel 使用啥约束高度? (使用 [NSString sizeWithFont...])【英文标题】:What constraint height to use for UILabel with numberOfLines=2? (using [NSString sizeWithFont...])numberOfLines=2 的 UILabel 使用什么约束高度? (使用 [NSString sizeWithFont...]) 【发布时间】:2013-03-09 18:36:07 【问题描述】:

对于行数有限的 UILabel,如何确定要在 [NSString sizeWithFont:constrainedToSize:...] 中使用的 constrainedToSize.height?

下面的约束高度是无限的(MAXFLOAT),但是当限制为 X 行时,标签的最大高度应该使用什么?

UILabel * label = [[UILabel alloc] init];
label.numberOfLines = 2;
label.text = @"Some really long text";

// what to use instead of MAXFLOAT?
CGSize constrainSize = CGSizeMake(285, MAXFLOAT);

CGSize size = [label.text
               sizeWithFont: [UIFont boldSystemFontOfSize:17.0]
               constrainedToSize:constrainSize
               lineBreakMode:NSLineBreakByWordWrapping
               ];

非常感谢!

【问题讨论】:

你的代码是对的。你觉得它有什么问题? @matt 代码将返回适合文本的大小,需要的行数可能超过他正在寻找的 2 行。 constrainSize 高度为无穷大的想法是让标签可以增长到任意高度。如果您知道它只能是有限大小,请设置它。 【参考方案1】:

如果您已经知道希望标签为 2 行,请使用:

CGFloat maxHeight = label.font.lineHeight * 2;
CGSize constrainSize = CGSizeMake(285, maxHeight);

【讨论】:

以上是关于numberOfLines=2 的 UILabel 使用啥约束高度? (使用 [NSString sizeWithFont...])的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 的 sizeToFit/sizeThatFits 忽略 numberoflines 属性

UILabel 的 numberOfLines 在单元格中不起作用

UILabel numberoflines 和 font size 在缩小时自动设置

UILabel属性(文本标签)

当UITableViewCell被点击时,UILabel未按预期更新的行数

以编程方式根据行数动态调整 UILabel 的大小