I am trying to display a viewController xib view with its view displayed under a fixed header banner (0,0,320,44) which is an imageView added on Application window.
This is because I need it to stick on the screen while I navigate multiple view controllers. Its a requirement of the project I am doing.
So far I have tried:
Resizing the XIB view to the appropriate frame size (0,0,320,416), both with dot notation and setter.
Changing the frame in viewDidLoad with self.view.frame = CGRectMake(0, 44, 320, 416);
but it is not working. Any suggestion?
Just want to add a bit more. The reason for changing view of a UIViewController does not work in
viewDidLoad
is because of the call[window makeKeyAndVisible]
, which is usually called after yourviewDidLoad
. This call will change the frame of thewindow.rootViewController
to equal the window's frame. You can test this by changing the UIViewController's view.frame AFTER[window makeKeyAndVisible]
, and the changes will stick.viewWillAppear
andviewDidAppear
are called within[window makeKeyAndVisible]
but after the view's frame got resized.The caveat is that only the top most controller which is the
rootViewController
has its view's frame changed automatically. This DOES NOT affect anychildViewControllers
attached to therootViewController
.Set the frame in
viewWillAppear