Question

I am setting the height of cell using heightForRowAtIndexPath: method returning 100. But in cellForRowAtIndexPath method, the cell's frame height is always 44px.

Following is my code.

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 100;
}

- (int) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }
    [cell setBackgroundColor:[UIColor redColor]];
    [cell.contentView setBackgroundColor:[UIColor redColor]];
    cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    NSLog(@"%f %f", cell.frame.size.height, cell.contentView.frame.size.height);
    return  cell;
}

The NSLog statement prints "44px 44px".

I am able to get the correct height using this statement

CGFloat height = [tableView heightForRowAtIndexPath:indexPath];
Was it helpful?

Solution

Your Delegate Method will not be called while allocating the cell. initWithStyle allways returns cells with height of 44 unless you overwrite it in a subclass.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top