iPhone – 在整个UIWindow中获取UIView的位置
UIView
的位置显然可以由view.center
或view.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行,似乎有理由指出,坐标…
- 旋转设备时请勿更改。
- 总是在未旋转的屏幕的左上angular。
- 是窗口坐标 :坐标系由窗口边界定义。 屏幕和设备的坐标系不同,不应与窗口坐标混淆。
在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) } }