UIView 的位置显然可以由 view.center 或 view.frame 等确定,但这仅返回 UIView 相对于其直接超视图的位置 .
UIView
view.center
view.frame
我需要确定 UIView 在整个320x480坐标系中的位置 . 例如,如果 UIView 在 UITableViewCell 中,它在窗口内的位置可能会发生显着变化,无论超级视图如何 .
UITableViewCell
任何想法是否以及如何可行?
干杯:)
Swift 4 :
let globalPoint = aView.superview?.convert(aView.frame.origin, to: nil)
在Swift中:
let globalPoint = aView.superview?.convertPoint(aView.frame.origin, toView: 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) } }
这很简单:
[aView convertPoint:localPosition toView:nil];
...将局部坐标空间中的点转换为窗口坐标 . 您可以使用此方法在窗口空间中计算视图的原点,如下所示:
[aView.superview convertPoint:aView.frame.origin toView:nil];
2014 Edit: 看看Matt__C评论的受欢迎程度,似乎有理由指出坐标......
旋转设备时
不会改变 .
的原点始终位于未旋转屏幕的左上角 .
是 window coordinates :坐标系由窗口的边界定义 . 屏幕和设备坐标系不同,不应与窗口坐标混淆 .
4 回答
Swift 4 :
在Swift中:
Swift 3,扩展名:
这很简单:
...将局部坐标空间中的点转换为窗口坐标 . 您可以使用此方法在窗口空间中计算视图的原点,如下所示:
2014 Edit: 看看Matt__C评论的受欢迎程度,似乎有理由指出坐标......
旋转设备时
不会改变 .
的原点始终位于未旋转屏幕的左上角 .
是 window coordinates :坐标系由窗口的边界定义 . 屏幕和设备坐标系不同,不应与窗口坐标混淆 .