iPhone - Get Position of UIView within entire UIWindow

0 votes
asked Sep 23, 2009 by adam

The position of a UIView can obviously be determined by view.center or view.frame etc. but this only returns the position of the UIView in relation to it's immediate superview.

I need to determine the position of the UIView in the entire 320x480 co-ordinate system. For example, if the UIView is in a UITableViewCell it's position within the window could change dramatically irregardless of the superview.

Any ideas if and how this is possible?

Cheers :)

4 Answers

0 votes
answered Sep 23, 2009 by nikolai-ruhe

That's an easy one:

[aView convertPoint:localPosition toView:nil];

... converts a point in local coordinate space to window coordinates. You can use this method to calculate a view's origin in window space like this:

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

2014 Edit: Looking at the popularity of Matt__C's comment it seems reasonable to point out that the coordinates...

  1. don't change when rotating the device.
  2. always have their origin in the top left corner of the unrotated screen.
  3. are window coordinates: The coordinate system ist defined by the bounds of the window. The screen's and device coordinate systems are different and should not be mixed up with window coordinates.
0 votes
answered Sep 30, 2015 by shlomi-schwartz

In Swift:

let globalPoint = aView.superview?.convertPoint(aView.frame.origin, toView: nil)
0 votes
answered Sep 15, 2017 by mohsenasm

Swift 3, with extension:

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)
    }
}
0 votes
answered Sep 15, 2017 by yuchen-zhong

Swift 3:

let globalPoint = aView.superview?.convert(aView.frame.origin, to: nil)
Welcome to Q&A, where you can ask questions and receive answers from other members of the community.
Website Online Counter

...