In my iPhone OS application I want (need) to watch for chances in the device orientation in order to rearrange certain portions of the screen. The approach I used was to use GRect frame = [UIScreen mainScreen].applicationFrame
to get the screen size, and from there calculate the size and / or positioning of other controls. (I also tried self.view.frame
)
All testing was done so far in Portrait mode, so I could focus on programming the main features and later on just do some adjustments for Landscape. And here enters the problem: In -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
I added some logging to check the sizes before proceeding, but apparently the values for Width and Height are "wrong" (I say "wrong" because at a first glance the values does not make sense to me).
Here's the output of some logging:
- Rotation: Landscape [w=300.000000, h=480.000000]
- Rotation: Portrait [w=320.000000, h=460.000000]
The values for "W" and "h" in Landscape seem inverted to me - I was expecting that w=480 and h=300.
What am I doing wrong? The code I used to debug is bellow.
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}