我想在uilabel
自定义单元格中显示UItableview
动态高度。我知道以下代码应该有效。
这是写在cell for row at index
cell.lblComment.lineBreakMode = NSLineBreakByWordWrapping;
cell.lblComment.numberOfLines = 0;
cell.lblComment.font = [UIFont fontWithName:@"Helvetica" size:14.0];
NSString *cellText = @"test test test test test test test test test test test";
UIFont *cellFont = cell.lblComment.font;
CGSize constraintSize = CGSizeMake(205.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
CGRect newFrame = cell.lblComment.frame;
newFrame.size.height = labelSize.height;
cell.lblComment.frame = newFrame;
cell.lblComment.text = cellText;
[cell.lblComment sizeToFit];
这是用高度委托方法写的。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"test test test test test test test test test test test";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
CGSize constraintSize = CGSizeMake(255.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
return labelSize.height + 70;
}
奇怪的是它返回单行,我尝试通过打印标签帧高度它是正确的但它没有出现在模拟器上。
我尝试通过增加xib中的高度相同的代码工作正常。我不确定为标签指定高度有什么问题。任何人都可以帮助我。
答案 0 :(得分:0)
我通过这个简单的替换解决了。可能这对其他人有帮助。
CGSize labelSize;
if ([cellText respondsToSelector:@selector(sizeWithAttributes:)])
{
labelSize = [cellText sizeWithAttributes:@{NSFontAttributeName:cellFont}];
}else{
labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
}