调整TableView中的单元格大小

时间:2014-03-14 17:51:27

标签: ios objective-c uitableview

我试图让我的一些细胞更高。我尝试使用

CGRect rect = cell.frame;
NSLog(@"before height: %f",rect.size.height);
rect.size.height +=20;

cell.frame = rect;
NSLog(@"AFTER height: %f",cell.frame.size.height);

in

  

的cellForRowAtIndexPath

  

willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath :( NSIndexPath   *)indexPath

日志显示值已更改,但未显示模拟器中的任何更改。

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

使用tableView:heightForRowAtIndexPath方法。

Apple docs清楚地解释了该怎么做。 UITableView class reference

每个tableView都有一个委托属性。将它设置到viewController并实现上面的方法。它的签名是

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

因此,根据 indexPath ,返回您想要的高度。

如果您希望所有行保持不变的高度,则可以使用rowHeight的{​​{1}}属性。

答案 1 :(得分:0)

使用UITableViewDelegate的heightForRowAtIndexPath。例如:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return indexPath.row == _pages.count - 1 ? 408 : 450;
}

答案 2 :(得分:0)

要使某些单元格更大,您应该实现方法tableView:heightForRowAtIndexPath:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (<SOMETHING>) {
        return height1;
    } else {
        return height2;
    }
}

tableView:cellForRowAtIndexPath:用于配置tableView需要显示的单元格的内容。

请注意,如果您有一个非常大的表(1000多个条目),tableView:heightForRowAtIndexPath:会对性能产生影响,当表视图显示时,会在每一行调用此方法。