为什么UITableViewCell比行高高1px?

时间:2010-03-09 18:12:03

标签: iphone uitableview

我有一个UITableViewController。在viewDidLoad中,我设置了rowHeight:

self.tableView.rowHeight = 43;

但是在cellForRowAtIndexPath中,我检查了单元格的高度:

NSLog(@"bounds: w = %f, h = %f", cell.bounds.size.width, cell.bounds.size.height);

这打印高度为44,宽度为320.任何人都知道为什么打印高度为44而不是43?

谢谢!

3 个答案:

答案 0 :(得分:4)

简单地说,这两件事是相互独立的。

rowHeight对象中设置UITableView时,您将告诉它如何呈现表格。 rowHeight的默认值为44。

创建UITableViewCell对象时,作为UIView的子类,它有自己的默认framebounds,其中包含height(和width)。 height的默认值也恰好等于44。

您出现混淆是因为您创建了一个UITableViewCell对象,并且您希望它height等于rowHeight对象中的(非默认)UITableView属性。怎么样?它刚刚出现!

与所有UIView一样,在某些内容出现并明确更改其height之前,其height不会发生变化。

答案 1 :(得分:3)

1。 不要忘记UITableView分隔符(separatorStyle属性);)

它的高度为1像素。

为普通风格的tableView设置self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone,您将看到预期值!

Grouped TableView将始终具有分隔符,并将按1 px进行调整。

2。 (提示)使用cell.contentView.frame(或bounds)属性而不是cell.frame(或bounds)

答案 2 :(得分:0)

你有:

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

无论如何,您都可以实现此方法返回43。您还可以根据自己的心灵内容进行自定义。这就是为什么它将UITableView作为其第一个参数。您可以使用同一个委托拥有多个UITableView。