Modifier le cadre self.view de UIViewController

J'essaie d'afficher une vue viewController xib avec sa vue affichée sous une bannière d'en-tête fixe (0,0,320,44) qui est un imageView ajouté sur la window de l'application.

C'est parce que j'en ai besoin pour coller sur l'écran pendant que je navigue sur plusieurs controllers de vue. C'est une exigence du projet que je fais.

Jusqu'à présent j'ai essayé:

Mais ça ne fonctionne pas. Toute suggestion?

Définir le cadre dans viewWillAppear

 - (void)viewWillAppear:(BOOL)animated { self.view.frame = CGRectMake(0, 44, 320, 416); [super viewWillAppear:animated]; } 

Je veux juste append un peu plus. La raison de changer la vue d'un UIViewController ne fonctionne pas dans viewDidLoad est due à l'appel [window makeKeyAndVisible] , qui est généralement appelé après votre viewDidLoad . Cet appel va changer le cadre de window.rootViewController pour qu'il soit égal au cadre de la window. Vous pouvez tester cela en changeant le view.frame de UIViewController APRES [window makeKeyAndVisible] , et les changements restront.

viewWillAppear et viewDidAppear sont appelés dans [window makeKeyAndVisible] mais après que l'image ait été redimensionnée.

La mise en garde est que seul le controller le plus haut qui est le rootViewController a son cadre d'affichage changé automatiquement. Cela n'affecte PAS les childViewControllers attachés au rootViewController .