Iphone 为什么UITableViewCell比行高1px?

Iphone 为什么UITableViewCell比行高1px?,iphone,uitableview,Iphone,Uitableview,我有一个UITableViewController。在viewDidLoad中,我设置了行高: self.tableView.rowHeight = 43; 但在cellForRowAtIndexPath中,我检查了单元格的高度: NSLog(@"bounds: w = %f, h = %f", cell.bounds.size.width, cell.bounds.size.height); 打印的高度为44,宽度为320。有人知道为什么它打印的高度是44而不是43吗 谢谢 您是否有: -

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

self.tableView.rowHeight = 43;
但在cellForRowAtIndexPath中,我检查了单元格的高度:

NSLog(@"bounds: w = %f, h = %f", cell.bounds.size.width, cell.bounds.size.height);
打印的高度为44,宽度为320。有人知道为什么它打印的高度是44而不是43吗

谢谢

您是否有:

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

无论发生什么情况,都可以实现此方法以返回43。您还可以根据自己的心意进行定制。这就是为什么它将UITableView作为第一个参数。您可以使用同一个委托拥有多个UITableView。

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

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

创建UITableViewCell对象时,作为UIView的子类,它有自己的默认帧和边界,包括高度和宽度。高度的默认值也恰好等于44

出现混淆的原因是您创建了UITableViewCell对象,并且希望它的高度等于UITableView对象中的非默认rowHeight属性。怎么可能呢?它刚刚出现

与所有UIView一样,除非有东西出现并明确改变其高度,否则其高度不会改变。

1。 不要忘记UITableView分隔符分隔符样式属性

它有1像素的高度

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

分组的TableView将始终具有分隔符,并将调整1像素

二,。
提示使用cell.contentView.frame或bounds属性,而不是cell.frame或bounds

我不太清楚。我明确地将行高设置为43。因此,我认为一个单元格的默认高度应该是43,这样就可以容纳一行。如果我想要一张非常紧凑的桌子,并且我将行高设置为10,该怎么办?显然,不应在43的高度创建单元格。UITableView和正在创建的UITableViewCell之间没有连接。请注意,所有委托方法都采用UITableView参数。这样您就可以自定义单元格的创建方式。