如何在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;
}
我有两个问题/问题
我的表似乎变得非常轻微推到右边,我怎么能解决这个问题?
这是使UITableViewControllers单元变大的正确方法吗? 另外:如果我做了一个自定义的单元格,我不能把自定义单元格放在一个整个单元格的位置上,那么,单元格的高度是多少并不重要?因为,它被自定义单元格所取代?
任何建议都会有帮助。谢谢。
如果你想每一行都是相同的高度,那么不要实现你拥有的两个方法。相反,只需添加在viewWillAppear:
以下行:
self.tableView.rowHeight = self.tableView.bounds.size.height/2.0;
还要注意的是,高度是基于表视图的高度,而不是屏幕的高度。这确保了两个单元格将适合表格视图的可见部分。如果有不同高度的行,则只执行heightForRowAtIndexPath:
。
仅供参考 - 您发布的任何代码都不会对表格看起来有任何影响。这一定是由别的东西引起的。
另一个注意事项 - 请记住,如果设备处于横向模式,[UIScreen mainScreen].bounds
会在iOS 7或更低版本下给出错误结果。
要更改UITableViewCell的高度,只需设置heightForRowAtIndexPath函数即可。在创建自定义单元格时,它仍然会受限于上述函数定义的大小。
有关您问题2号,是的,如果你是定制单元更换你的细胞,你并不需要实现高度的委托方法,因为你已经在你的自定义单元格那一套。
在iOS8上你可以设置你的行高这样获得自动高度对你的细胞(如果你有安装限制)
self.tableView.estimatedRowHeight = 44 //or your estimated row height
tableView.rowHeight = UITableViewAutomaticDimension
作为马迪说,你不应该执行'的tableView:heightForRowAtIndexPath:'方法除非你需要你的细胞高度在细胞之间变化。 (投票)实现该方法可以显着减慢滚动速度,特别是在表视图显示大型数据集时(大量的总数据行,而不是任何时候屏幕上的行数)。 – 2014-11-04 22:02:57