iOS:UIView关于UIWindow的起源

时间:2011-11-10 17:47:48

标签: iphone ios cocoa-touch uiview uiviewcontroller

UIView在其超视图的框架或边界属性中包含一个原点。假设我想做一些相对于UIWindow抓取UIView的起源的东西。我是否必须逐步进行层次结构以进行此计算,或者是否有更简单,更直接的方法?

3 个答案:

答案 0 :(得分:5)

我猜你在找这个方法

convertPoint:toView

答案 1 :(得分:2)

要找出视图aView在应用程序窗口中的位置,请尝试

[aView convertRect:aView.frame toView:[UIWindow screen]]

此方法位于UIView Class Reference

答案 2 :(得分:0)

执行此操作的最佳和最简单方法是在convertRect:toView上使用UIWindowUIView。为了正确执行此操作,您需要提供一个视图,其窗口与您尝试转换其坐标的视图窗口相匹配。

对于您的问题,您需要知道视图在窗口中的位置。谢天谢地,你不需要知道窗口才能得到这个。根据{{​​1}} convert:to方法的文档。

  

要转换其坐标系点的视图。如果view为nil,则此方法将转换为窗口基坐标。否则,视图和接收者都必须属于同一个UIWindow对象。

这意味着您只需提供nil即可实现所需目标!

在斯威夫特:

let pointInWindow = yourView.convert(.zero, to: nil)

在Objective-C中:

CGPoint pointInWindow = [yourView convertPoint:CGPointZero toView:nil];