首页 文章

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

提问于
浏览
185

UIView 的位置显然可以由 view.centerview.frame 等确定,但这仅返回 UIView 相对于其直接超视图的位置 .

我需要确定 UIView 在整个320x480坐标系中的位置 . 例如,如果 UIViewUITableViewCell 中,它在窗口内的位置可能会发生显着变化,无论超级视图如何 .

任何想法是否以及如何可行?

干杯:)

4 回答

  • 320

    Swift 4

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

    在Swift中:

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

    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)
        }
    }
    
  • 29

    这很简单:

    [aView convertPoint:localPosition toView:nil];
    

    ...将局部坐标空间中的点转换为窗口坐标 . 您可以使用此方法在窗口空间中计算视图的原点,如下所示:

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

    2014 Edit: 看看Matt__C评论的受欢迎程度,似乎有理由指出坐标......

    旋转设备时

    • 不会改变 .

    • 的原点始终位于未旋转屏幕的左上角 .

    • window coordinates :坐标系由窗口的边界定义 . 屏幕和设备坐标系不同,不应与窗口坐标混淆 .

相关问题