如何获得UITableViewCell的rect大小?
我试图在每次用户点击一个单元格时显示一个弹出悬停,并希望弹出悬停以每个单元格为中心显示:
[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
h4xxr.. 38
最近不得不这样做.你需要使用[tableView rectForRowAtIndexPath]
.
但是,有一件事可以让你感到惊讶的是,当您滚动浏览UITableView时,您需要考虑偏移量(即,将其y位置报告为3000像素的东西当然意味着从UITableView顶部开始3000 - 不是屏幕上有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'位.替换自己细胞高度的一半.
最近不得不这样做.你需要使用[tableView rectForRowAtIndexPath]
.
但是,有一件事可以让你感到惊讶的是,当您滚动浏览UITableView时,您需要考虑偏移量(即,将其y位置报告为3000像素的东西当然意味着从UITableView顶部开始3000 - 不是屏幕上有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'位.替换自己细胞高度的一半.