I have a view which is created in landscape mode (long after rotation etc.).
In this view, I want to find a point relative to the main window.
The following code works in portrait mode, but in landscappe it still returns values as if it were in portrait.
CGPoint ptRelativeToWindow = [self convertPoint:self.bounds.origin toView:nil];
Solved
This solved the problem and gives the right coordinates:
[self convertPoint:self.bounds.origin toView:[UIApplication sharedApplication].keyWindow.rootViewController.view];
You can't use main window to calculate relative coordinates. Main window receives rotation events and passes them onto controllers which means it doesn't change the size itself (always has the same portrait bounds). That's why the solution you found makes sense: you find the coordinates relative to the view of the root controller which does receive rotation events and changes its size accordingly
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With