我想知道,在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:
更有用,这取决于您打算如何处理坐标。点和矩形转换方法也有类似的版本。