Convert a UIView origin point to its Window coordinate system

Nishit picture Nishit · Jul 10, 2010 · Viewed 39.9k times · Source

I want to get the origin of scrollView in the window coordinate system. For Example, presently, scollView origin is (0,51). But in window coordinate system it should be 51 + 44(navigation bar height)+20(status bar height) = 115. Means in window coordinate system the scrollView.frame.origin should be (0,115). I tried with convertPoint: methods but getting (0,51) or (0,0) sometimes. Please provide a solution to this. Thanks

Answer

TechZen picture TechZen · Jul 10, 2010

It sounds like your not converting between the proper views. A view's frame is set to the coordinates of it's superview, not its own internal coordinates, so if you were trying to convert the origin of a view to window coordinates, you would need to use the superview:

[[self superview] convertPoint:self.frame.origin toView:theWindow];

However, it is even simpler to convert the zero point from the view itself to the window. The two pieces of code are equivalent, and so it isn't necessary to use the origin at all.

[self convertPoint:CGPointZero toView:theWindow];