我想知道,在ipad/iphone应用程序中是否可以获得控件的绝对位置。我有一个文本域,它在视图的子视图的子视图中。我想知道与顶部父视图相关的x和y值(例如,当前文本字段的x和y返回10和10,因为这是它在自己视图中的帧位置,但我想知道与其父视图相关的x和y值,应该是x=10和y=220)。我需要做一个通用的方法。希望这有意义。
有什么想法吗?

最佳答案

您正在查找-[UIView convertPoint:toView:]
例如,要根据窗口的基坐标获取视图view的原点,您可以编写:

CGPoint localPoint = [view bounds].origin;
CGPoint basePoint = [view convertPoint:localPoint toView:nil];

如果要将该点转换为同一窗口中其他视图的坐标系,则可以将该视图用作toView:参数,而不是nil
NSAssert([view window] == [otherView window],
        @"%s: Views must be part of the same window.", __func__);
CGPoint otherPoint = [view convertPoint:localPoint toView:otherView];

因为不同的坐标系可以有不同的比例,所以您可能会发现-convertRect:toView:更有用,这取决于您打算如何处理坐标。点和矩形转换方法也有类似的版本。

07-26 09:33