高度UITableViewCell的问题

时间:2014-04-14 15:54:39

标签: ios objective-c uitableview

这是我的故事:

我的IUTableViewCell大小有问题。当我添加几个单元格时,单元格会自动调整大小。

任何答案都将不胜感激:)

我的代码要调整大小:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPathInCellTable:(NSIndexPath *)indexPath {

    CustomCell *cell = (CustomCell*) [self tableView:tableView
                         cellForRowAtIndexPath:indexPath];
    CGSize size;

    // SIZE HEIGHT TEXT
        size = [cell.color.text sizeWithAttributes:
                @{NSFontAttributeName:
                      [UIFont systemFontOfSize:12.0f]}];

      // SIZE HEIGHT FOR CELL
        CGRect frame = [cell frame];
        frame.size.height +=  size.height;
        [cell setFrame:frame];

      // SIZE HEIGHT IMG
        CGRect frame = [cell.img frame];
        frame.size.height = 69;
        frame.size.width = 69;
        [cell.img setFrame:frame];

    if (indexPath.row == 0) [self setHeightTableView:0];
    _tableHeightConstraint.constant += cell.frame.size.height;

    return cell.frame.size.height;
}

有一些截图:

我第一次添加一个单元格一切都很好

enter image description here

对于第二个单元格来说一切都很好

enter image description here

问题来了  enter image description here

2 个答案:

答案 0 :(得分:1)

您调用CustomCell

 *cell = (CustomCell*) [self tableView:tableView
                         cellForRowAtIndexPath:indexPath];

获取一个单元格,这是错误的,因为还没有创建单元格(所以它是零)。在创建单元格之前调用tableView:heightForCell:atIndexPath:。最好的解决方案是使用一个模块来保存单元所需的高度或进行类似的计算

答案 1 :(得分:0)

使用原型单元格来获取大小而不是使用tableView:cellForRowAtIndexPath:

http://www.samrayner.com/posts/dynamic-tableview-cells/