Reputation: 195
I have a view that I'm creating in the loadview like this:
- (void)loadView {
UIView *mainView = [[UIView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds];
self.view = mainView;
[mainView release];
}
So, if I print the view I got the result: > OK, that's what I wanted, 767x1024
The problem is, if I call this method:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
and present a modalViewController and then dismiss it, on my previous view controller, printing the method viewDidAppear and viewWillAppear I got this:
viewWillAppear:
[<UIView: 0x4e946a0; frame = (0 0; 768 1024); layer = <CALayer: 0x4e946d0>>]
viewDidAppear:
[<UIView: 0x4e946a0; frame = (0 0; 768 1004); layer = <CALayer: 0x4e946d0>>]
Why the view size is changing by 20? I know that has something to do with the status bar, but can't figure it out.
Thanks.
Upvotes: 1
Views: 599
Reputation: 5694
You are right. Status bar default size is 20 pixel in height. UIViewController automatically adjust child view size as status bar appears. According to apple documentation "When a view controller is displayed on screen, its root view is typically resized to fit the available space, which can vary depending on the window’s current orientation and the presence of other interface elements such as the status bar." — http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html
Upvotes: 1