objective-c - 如何获取 UITableViewCell 的矩形大小?

标签 objective-c iphone cocoa-touch uitableview ipad

如何获得 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/

相关文章:

iphone - 如何取消 UIScrollView 中的滚动

ios - 如何使 iOS 7 下的 UISwitch 不采用其背后 View 的背景颜色?

Objective-C ARC 已在 PCH 文件中启用,但当前已禁用 - 错误

java - iOS 框架中的 LinkedList 等价物是什么?

iphone - 从 iPhone 应用程序打开家长锁

ios - 从多 View 应用程序中的每个 View 发送串行数据

ios - 在iPAD上检测iPhone特定的应用程序“正在运行”

ios - 使用 ReplayKit 录制屏幕上的任何应用程序

iphone - 在 UITableView 中按字母顺序显示 .plist 键值

ios - Sprite Kit 中的单个粒子和物理