heightForRowAtIndexPath中的当前单元格高度?

时间:2013-04-10 13:46:44

标签: ios objective-c uitableview

我有一张带静态细胞的桌子。对于一个单元格,我想根据标签的高度(在单元格内部)更改其高度,同时保持所有其他单元格的高度不变。我怎样才能获得当前细胞的高度?或者可能有更好的方法?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([indexPath section] == 2) {
        return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height;
    } else {
        return ...; // what should go here, so the cell doesn't change its height?
    }
}

6 个答案:

答案 0 :(得分:12)

您可以致电:

[super tableView:tableView heightForRowAtIndexPath:indexPath] 
<\ n>在else块中,所以如果您更改了默认高度,则无需担心。

答案 1 :(得分:4)

您可以获取/设置默认高度tableView.rowHeight,或者您可以在更改单元格高度之前存储高度,这样您就可以从某个变量获取默认高度;

答案 2 :(得分:1)

请做这个

if ([indexPath section] == 2)
{
    if(indexPath.row == 1)
         return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height; 
    else 
         tableView.rowHeight
}

答案 3 :(得分:1)

@talnicolas很好的答案,这里是Swift 3:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if indexPath.section == 2 {
        let easy = self.myLabel.frame
        return easy.origin.y *2 + easy.size.height
    } else {
        return super.tableView(tableView, heightForRowAt: indexPath)
    }
}

答案 4 :(得分:0)

您可能想要计算约束宽度的标签高度。在这种情况下,您可以创建类似的方法:

- (CGFloat)textHeightOfMyLabelText {
    CGFloat textHeight = [self.myLabel.text sizeWithFont:self.myLabel.font constrainedToSize:LABEL_MAX_SIZE lineBreakMode:self.myLabel.lineBreakMode].height;
    return textHeight;
}

并在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath中使用结果。 不要忘记添加标签的保证金值。

答案 5 :(得分:0)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == youSectionNumber)
    {
        if (indexPath.row == numberOfrow)
        {
            return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height;
        }
    }

      return 44; // it is default height of cell;
}