Iphone iOS:UIView';相对于UIWindow的s原点

Iphone iOS:UIView';相对于UIWindow的s原点,iphone,ios,cocoa-touch,uiview,uiviewcontroller,Iphone,Ios,Cocoa Touch,Uiview,Uiviewcontroller,UIView在其相对于其superview的frame或bounds属性中包含原点。假设我想做一些事情,获取UIView相对于UIWindow的原点。为了进行计算,我是否必须在层次结构中每一步都进行一次,还是有一种更简单、更直接的方法?我想你正在寻找这种方法 我想你正在寻找这种方法 若要查找应用程序窗口中视图的位置,请尝试 [aView convertRect:aView.frame toView:[UIWindow screen]] 此方法位于中要查找视图视图在应用程序窗口中的位置,请尝试 [

UIView在其相对于其superview的frame或bounds属性中包含原点。假设我想做一些事情,获取UIView相对于UIWindow的原点。为了进行计算,我是否必须在层次结构中每一步都进行一次,还是有一种更简单、更直接的方法?

我想你正在寻找这种方法


我想你正在寻找这种方法


若要查找应用程序窗口中视图的位置,请尝试

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


此方法位于

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

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


此方法在

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

对于您的问题,您需要知道视图相对于其在窗口中的位置的原点。谢天谢地,你不需要知道窗口就可以得到这个。根据
UIView
convert:to
方法的文档

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

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

迅速:

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

在目标C中:


CGPoint pointInWindow=[yourView-convertPoint:CGPointZero-to-view:nil]

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

对于您的问题,您需要知道视图相对于其在窗口中的位置的原点。谢天谢地,你不需要知道窗口就可以得到这个。根据
UIView
convert:to
方法的文档

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

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

迅速:

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

在目标C中:


CGPoint pointInWindow=[yourView-convertPoint:CGPointZero-to-view:nil]

您希望对视图执行什么操作?你是说触摸/拖动它吗?我想用一种不同的方式显示图像。基本上,我希望能够让用户点击图像,然后让它占据整个屏幕来显示图像,当用户完成后,它会将UIView恢复到原来的状态。我的描述有意义吗?您可能会发现创建另一个横跨全屏的视图并在该视图中显示图像更容易。您可以在不更改原始视图或原始视图的行为的情况下确定如何显示该视图(例如隐藏/取消隐藏或设置动画)。然后,您只需要一些代码来管理这个新视图,它独立于管理原始视图的代码?你是说触摸/拖动它吗?我想用一种不同的方式显示图像。基本上,我希望能够让用户点击图像,然后让它占据整个屏幕来显示图像,当用户完成后,它会将UIView恢复到原来的状态。我的描述有意义吗?您可能会发现创建另一个横跨全屏的视图并在该视图中显示图像更容易。您可以在不更改原始视图或原始视图的行为的情况下确定如何显示该视图(例如隐藏/取消隐藏或设置动画)。然后您只需要一些代码来管理这个新视图,它独立于管理原始视图的代码。注意:origin-是一个点(CGPoint)。因此,请使用
convertPoint
方法isteadOops!我错过了。你找到了正确的方法。将上述表格与convertPoint而不是convertRect一起使用。注意:原点-是一个点(CGPoint)。因此,请使用
convertPoint
方法isteadOops!我错过了。你找到了正确的方法。将上述表单与convertPoint而不是convertRect一起使用。