convertRect在超级视图中获取相对位置

时间:2012-09-05 00:05:18

标签: iphone objective-c ios ipad uiview

我有一堆水平UITableView放在UIViewController1中。我想找到被点击的UITableViewCell的位置,我想根据UIViewController1得到位置。所以这就是我在didSelectRowAtIndexPath中所做的:

MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath];

                UIView *animatedView = [[UIView alloc] initWithFrame:cell.frame];
 [animatedView setFrame:[animatedView convertRect:animatedView.frame toView:self.newsRackController.view]];

然而,似乎这不能正确转换它。我做错了什么?

2 个答案:

答案 0 :(得分:8)

您需要从UITableView的视图转换UITableViewCell的CGRect,然后再将其转换为视图控制器视图。

但不是全部,也许你可以使用UITableView的方法

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath

获取此CGRect并将其转换为您的UIViewController的视图。

答案 1 :(得分:1)

这是因为animatedView不属于任何父母,而您使用frame作为bounds。您应首先找到框架并相应地初始化animatedView

MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath];
CGRect animatedViewFrame = [tableView convertRect:cell.frame toView:self.newsRackController.view];
UIView *animatedView = [[UIView alloc] initWithFrame:animatedViewFrame];