自定义tableview单元格UIlabel

时间:2015-06-03 10:16:05

标签: uitableview ios8 uilabel

我想在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中的高度相同的代码工作正常。我不确定为标签指定高度有什么问题。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我通过这个简单的替换解决了。可能这对其他人有帮助。

CGSize labelSize;
    if ([cellText respondsToSelector:@selector(sizeWithAttributes:)])
    {
        labelSize = [cellText sizeWithAttributes:@{NSFontAttributeName:cellFont}];
    }else{
        labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
    }