如何在iOS中获得更大的UITableView

问题描述:

目前,我正在进行子类化UITableViewController。我已通过实施两种方法使UITableviewController中的每个单元更大。如何在iOS中获得更大的UITableView

代码:

(CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
    return screenHeight * 1/2; 
} 

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

    CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
    return screenHeight * 1/2; 
} 

我有两个问题/问题

  1. 我的表似乎变得非常轻微推到右边,我怎么能解决这个问题?

  2. 这是使UITableViewControllers单元变大的正确方法吗? 另外:如果我做了一个自定义的单元格,我不能把自定义单元格放在一个整个单元格的位置上,那么,单元格的高度是多少并不重要?因为,它被自定义单元格所取代?

任何建议都会有帮助。谢谢。

如果你想每一行都是相同的高度,那么不要实现你拥有的两个方法。相反,只需添加在viewWillAppear:以下行:

self.tableView.rowHeight = self.tableView.bounds.size.height/2.0; 

还要注意的是,高度是基于表视图的高度,而不是屏幕的高度。这确保了两个单元格将适合表格视图的可见部分。如果有不同高度的行,则只执行heightForRowAtIndexPath:

仅供参考 - 您发布的任何代码都不会对表格看起来有任何影响。这一定是由别的东西引起的。

另一个注意事项 - 请记住,如果设备处于横向模式,[UIScreen mainScreen].bounds会在iOS 7或更低版​​本下给出错误结果。

+0

作为马迪说,你不应该执行'的tableView:heightForRowAtIndexPath:'方法除非你需要你的细胞高度在细胞之间变化。 (投票)实现该方法可以显着减慢滚动速度,特别是在表视图显示大型数据集时(大量的总数据行,而不是任何时候屏幕上的行数)。 – 2014-11-04 22:02:57

要更改UITableViewCell的高度,只需设置heightForRowAtIndexPath函数即可。在创建自定义单元格时,它仍然会受限于上述函数定义的大小。

有关您问题2号,是的,如果你是定制单元更换你的细胞,你并不需要实现高度的委托方法,因为你已经在你的自定义单元格那一套。

在iOS8上你可以设置你的行高这样获得自动高度对你的细胞(如果你有安装限制)

self.tableView.estimatedRowHeight = 44 //or your estimated row height 
tableView.rowHeight = UITableViewAutomaticDimension