如何获得 UITableViewCell 的正确大小?
我试图在每次用户点击单元格时显示弹出式悬停,并希望弹出式悬停显示在每个单元格的中心:
[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
最佳答案
最近不得不这样做。您需要使用 [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”位。替换为您自己的单元格高度的一半。
关于objective-c - 如何获取 UITableViewCell 的矩形大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676394/