2

如何获取 UITableview 中第一个单元格的确切起始位置?

4

4 回答 4

9

首先,您需要在表格中获取矩形

CGRect cellRectInTable = [tableView rectForRowAtIndexPath:indexPath];

然后你把它转换成超级视图

CGRect cellInSuperview = [tableView convertRect:cellRectInTable toView:[tableView superview]];

你也可能有运气

CGRect cellInWindow = [tableView convertRect:cellRectInTable toView:nil];

然后你可以访问这些矩形的起源

...rect.origin.x
...rect.origin.y

Apple Docs UIView convRect

苹果文档 rectForRowAtIndexPath

于 2013-08-01T21:09:34.827 回答
0

您可以通过以下方式获得它:

int y = cell.frame.origin.y;
int x = cell.frame.origin.x;
于 2013-08-01T20:53:53.040 回答
0

在委托方法 tableView:cellForRowAtIndexPath: 中调用 dequeueReusableCellWithIdentifier:forIndexPath: 后调用以下内容,然后将其存储在 CGPoint 属性中。

为了更紧凑

if (self.indexPath.row == 0 && self.indexPath.section == 0){
    CGPoint point = CGPointMake(cell.frame.origin.x, cell.frame.origin.y);
    self.firstPoint = point;
}

当然,您可以将 self.firstPoint 放在 point 所在的位置,但我将它们分开来演示。

您还可以通过调用以任何给定方法从索引路径中获取单元格

[self.tableView cellForRowAtIndexPath: indexPath]
于 2013-08-01T20:56:12.163 回答
0

尝试这个:

int numberOfCells = [self.tableView numberOfRowsInSection:0]; // whatever section number
if (numberOfCells > 0) {
    NSIndexPath *firstCellIndex = [NSIndexPath indexPathForRow:0 inSection:0];
    UITableViewCell *firstCell = [self.tableView cellForRowAtIndexPath:firstCellIndexPath];
    NSLog(@"%d, %d", firstCell.frame.origin.x, firstCell.frame.origin.y);
}
于 2013-08-01T20:58:29.433 回答