iPhone – 在整个UIWindow中获取UIView的位置

UIView的位置显然可以由view.centerview.frame等来确定,但是这只返回UIView相对于它的直接超级视图的位置。

我需要确定UIView在整个320×480坐标系统中的位置。 例如,如果UIView位于UITableViewCell那么它在窗口中的位置可能会显着改变,而不pipesuperview如何。

任何想法,如果这是可能的?

干杯:)

这是一个容易的:

 [aView convertPoint:localPosition toView:nil]; 

…将局部坐标空间中的点转换为窗口坐标。 你可以使用这个方法在窗口空间中计算一个视图的原点,如下所示:

 [aView.superview convertPoint:aView.frame.origin toView:nil]; 

2014编辑:看着Matt__C的评论的stream行,似乎有理由指出,坐标…

  1. 旋转设备时请勿更改。
  2. 总是在未旋转的屏幕的左上angular。
  3. 窗口坐标 :坐标系由窗口边界定义。 屏幕和设备的坐标系不同,不应与窗口坐标混淆。

在Swift中:

 let globalPoint = aView.superview?.convertPoint(aView.frame.origin, toView: nil) 

Swift 4

 let globalPoint = aView.superview?.convert(aView.frame.origin, to: nil) 

Swift 3,扩展名:

 extension UIView{ var globalPoint :CGPoint? { return self.superview?.convert(self.frame.origin, to: nil) } var globalFrame :CGRect? { return self.superview?.convert(self.frame, to: nil) } }