如何获取UITableViewCell的rect大小?
我试图在用户每次点击一个单元格时显示一个弹出悬停,并希望弹出悬停在每个单元格中居中显示:
[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
答案 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'位。替换自己细胞高度的一半。