如何在UITableview中获得第一个单元格(x,y)的确切起始位置?

时间:2013-08-01 20:50:38

标签: iphone ios

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

4 个答案:

答案 0 :(得分:9)

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

CGRect cellRectInTable = [tableView rectForRowAtIndexPath:indexPath];

然后你将其转换为超级视图

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

你可能也有运气

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

然后你可以访问那些rects的来源

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

Apple Docs UIView convRect

Apple Docs rectForRowAtIndexPath

答案 1 :(得分:0)

您可以使用以下方式获取它:

int y = cell.frame.origin.y;
int x = cell.frame.origin.x;

答案 2 :(得分: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]

答案 3 :(得分: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);
}