如何使单元格高度适合屏幕

时间:2015-03-18 04:43:09

标签: ios objective-c uitableview

我有UITableView并且有10行(这是一个动态表,因此将加载更多行)。

每个单元格/行应具有全屏的高度。现在iOS中有不同的屏幕尺寸。

因此,我无法为单元格行提供固定的高度,因为iOS设备的高度不同。

那么我怎样才能使单元格高度适合屏幕高度?

2 个答案:

答案 0 :(得分:3)

如果您的tableView在ViewController中,那么您可以使用以下代码:

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

    return CGRectGetHeight(self.view.bounds);
}

否则,如果您的屏幕全屏显示,请使用此

return CGRectGetHeight([[UIScreen mainScreen] bounds]);

否则,如果您的屏幕也包含导航栏,请使用

return CGRectGetHeight([[UIScreen mainScreen] bounds] - 64.0f);

或者最佳解决方案可能是

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

    return CGRectGetHeight(tableView.bounds);
}

<强>被修改

最好使用rowHeight属性而不是delegate。原因如下:

  

使用会对性能产生影响   tableView:heightForRowAtIndexPath:代替rowHeight。一切   显示表视图的时间,它调用   tableView:heightForRowAtIndexPath:代表每个代表   行,这可能导致表的显着性能问题   具有大量行(大约1000或更多)的视图。

感谢rdelmar

Source

答案 1 :(得分:0)

这个怎么样?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return self.view.frame.size.height-yourTableViewStartingYPosition;
}

如果全屏显示,则为return self.view.frame.size.height