如何获得UITableViewCell的rect大小?

时间:2010-04-20 15:28:08

标签: objective-c iphone cocoa-touch uitableview ipad

如何获取UITableViewCell的rect大小?

我试图在用户每次点击一个单元格时显示一个弹出悬停,并希望弹出悬停在每个单元格中居中显示:

[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) 
                              inView:self.view 
            permittedArrowDirections:UIPopoverArrowDirectionDown 
                            animated:YES];

1 个答案:

答案 0 :(得分:38)

最近不得不这样做。您需要使用[tableView rectForRowAtIndexPath]

但是,其中一件可以让你感到惊讶的是,当您滚动浏览UITableView时,您需要考虑偏移量(即,将其y位置报告为3000像素的东西当然意味着从顶部开始3000 UITableView - 屏幕上不是3000像素。)

除此之外,它自然会出现在单元格的顶部,因此您需要将单元格高度的一半添加到计算中。

这段代码对我很有用:

CGRect frame = [tableView rectForRowAtIndexPath:indexPath];
CGPoint yOffset = self.tableView.contentOffset;
[self.popoverController presentPopoverFromRect:CGRectMake(frame.origin.x, (frame.origin.y + 45 - yOffset.y), frame.size.width, frame.size.height)

在我的情况下,每个单元格高90像素,因此'+45'位。替换自己细胞高度的一半。