获取UILabel iOS8中的行数

时间:2015-06-28 06:23:09

标签: objective-c uitableview uilabel

我看到很多关于这个问题的弃用答案:

如何基于其设置文本计算UILabel中使用的行数?

我知道我需要将UILabel设置为使用自动换行来调整大小。通过这种方式,我可以检测到UILabel的高度,并调整NSLayoutConstraint作为UITableViewCell的高度。基本上我的问题简单明了:

如何确定我的 UILabel 的正在使用的行数(基于descriptionLabel.text)或高度,以便调整我的 UITableView 的大小< strong> UITableViewCell ,其中包含 UILabel

目前我已使用此代码:

descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, 30, 270, 65)];
descriptionLabel.textColor = [UIColor blackColor];
descriptionLabel.numberOfLines = 0;
descriptionLabel.adjustsFontSizeToFitWidth = YES;

2 个答案:

答案 0 :(得分:0)

尝试使用以下代码

NSAttributedString *attrStr = ... // your attributed string
CGFloat width = 300; // whatever your desired width is
CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
//rect is the height of UILABEL which u can used as height of label or table view row or etc

答案 1 :(得分:0)

我用这段代码很简单地解决了我的问题:

CGSize maxSize = CGSizeMake(290.0f, CGFLOAT_MAX);
CGSize requiredSize = [descriptionLabel sizeThatFits:maxSize];
[descriptionLabel setFrame:CGRectMake(15, 50, requiredSize.width, requiredSize.height)];
NSLog(@"THE HEIGHT OF THIS DESCRIPTIONLABEL IS: %f",cell.frame.size.height);