获取Objective C IPad应用程序中任何控件的绝对位置

Hac*_*her 9 iphone xcode location objective-c ipad

我想知道无论如何你都可以在ipad/iphone应用程序中获得控件的绝对位置.例如,我有一个TextField,它位于视图子节点的子节点内.我想知道与顶级父视图相关的X和Y值(例如,当前文本字段的x和Y返回10和10,因为这是它在自己视图中的帧位置,但我想知道这与它的父级应该是X = 10和Y = 220的东西.我需要以某种方式为此制作一个通用方法.希望这是有道理的.

有任何想法吗?

Jer*_*man 28

你在找-[UIView convertPoint:toView:].

例如,要view根据窗口的基本坐标获取视图的原点,您可以编写:

CGPoint localPoint = [view bounds].origin;
CGPoint basePoint = [view convertPoint:localPoint toView:nil];
Run Code Online (Sandbox Code Playgroud)

如果您想将该点转换为同一窗口中某个其他视图的坐标系,则可以将该视图用作toView:参数而不是nil:

NSAssert([view window] == [otherView window],
        @"%s: Views must be part of the same window.", __func__);
CGPoint otherPoint = [view convertPoint:localPoint toView:otherView];
Run Code Online (Sandbox Code Playgroud)

由于不同的坐标系可能具有不同的比例,因此您可能会发现-convertRect:toView:它们更有用,具体取决于您计划对坐标执行的操作.还有-fromView:点和矩形转换方法的类似版本.