Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UITableViewCell frame height is always 44px

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];
like image 576
Dhawal Avatar asked Jan 24 '13 15:01

Dhawal


1 Answers

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.

like image 85
Jonathan Cichon Avatar answered Sep 29 '22 23:09

Jonathan Cichon