检测UILabel换行符。动态地将项目放入UITableViewCell

时间:2014-11-24 16:09:16

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

如果有办法检测UILabel是否有换行符,我想在填写UITableViewCell的{​​{1}}中包含的多个UITableView后检测到。因为我喜欢动态设置它的帧。我需要这样做,因为我有一个UILabel在另一个之上,而另一个之下的UILabel必须与每一行的距离相同。

我只找到UILabel的属性numberOfLines,我意识到根据设备(iPhone 6,6 Plus和其他设备),UILabel的宽度会发生变化。所以它直接影响到UITableViewCell空间。我可以计算UILabel的长度,并根据它,根据这个长度更改下面UILabel的框架,但我不喜欢这样。

任何帮助?

由于

2 个答案:

答案 0 :(得分:1)

您无需检测换行符即可执行此操作。你应该使用自动布局。您应该在顶部标签的底部和底部标签的顶部之间设置一个垂直间距约束 - 无论标签扩展到什么尺寸,都会给它们一个固定的间距。

答案 1 :(得分:1)

我会尝试用给定的字体测试给定文本的高度。通过这种方式,您将知道文本占用了多少行(当然,如果有换行符但您不知道)。首先,您必须计算文本的大小:

CGRect rect = [yourStrign boundingRectWithSize:CGSizeMake(yourLabelWidth, MAXFLOAT)
                                       options:NSStringDrawingUsesLineFragmentOrigin
                                    attributes:@{NSFontAttributeName: yourFont}
                                       context:nil];

现在,要知道你需要进行分割的行数:

return ceil(rect.size.height / yourFont.lineHeight);