我想获得UITableVIewCell相对于屏幕的位置,而不是相对于tableview。因此,如果我滚动tableview,位置会更新。
答案 0 :(得分:6)
您应该使用两个步骤来实现此目的:
- (CGRect)rectForHeaderInSection:(NSInteger)section; - (CGRect)rectForFooterInSection:(NSInteger)section; - (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;
2。使用 UITableView 的 convertRect 方法将 CGRect 转换为表的容器视图。例如。要获取第一个标题的当前位置,您可以使用此代码:
CGRect rect = [mytable convertRect:[mytable rectForHeaderInSection:0] toView:[mytable superview]];
如果你想要这些以上语音,你可能想要在UITableView的委托方法中包含这些代码:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView_ {.....
我使用类似技术完成的一个例子是在github上 - 如何修复表头行:
https://github.com/codedad/SO_Fixed_TableHeader_iOS
希望它可以帮到你!
答案 1 :(得分:0)
你需要从孩子到父母的位置:
float x = cell.frame.origin.x;
float y = cell.frame.origin.y;
UIView* parent = cell.parent;
while(parent != nil)
{
x += parent.frame.origin.x;
y += parent.frame.origin.y;
parent = parent.parent;
}
答案 2 :(得分:0)
使用-[UITableView rectForRowAtIndexPath:]
方法。请记住,如果您在屏幕上关闭单元格时尝试获取此信息,则会出现意外结果。然后,您可以使用-[UIView convertRect:toView:]
方法将其转换为视图控制器的视图(我认为这就是屏幕的含义)。