8

静的セルを含むテーブルがあります。1 つのセルについて、ラベルの高さ (そのセル内) に応じてその高さを変更し、同時に他のすべてのセルの高さをそのままにします。現在のセルの高さを取得するにはどうすればよいですか? それとも、より良いアプローチがありますか?

- (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?
    }
}
4

6 に答える 6

12

あなたは呼び出すことができます:

[super tableView:tableView heightForRowAtIndexPath:indexPath] 

デフォルトの高さを変更しても心配する必要はありません。

于 2013-04-10T14:14:00.613 に答える
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;
}
于 2013-04-10T13:59:22.697 に答える
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ます。ラベルのマージン値を追加することを忘れないでください。

于 2013-04-10T13:57:26.140 に答える