que life change objective-c ios uiview uiviewcontroller

objective c - life - Cambiar UIViewController self.view frame



view lifecycle ios (2)

Estoy tratando de mostrar una vista xib viewController con su vista mostrada debajo de un banner de cabecera fijo (0,0,320,44) que es una imagen vista agregada en la ventana de la aplicación.

Esto se debe a que necesito que se quede en la pantalla mientras navego por múltiples controladores de visualización. Es un requisito del proyecto que estoy haciendo.

Hasta ahora lo he intentado:

  • Cambia el tamaño de la vista XIB al tamaño de fotograma apropiado (0,0,320,416), ambos con notación de puntos y ajustador.

  • Cambiar el marco en viewDidLoad con self.view.frame = CGRectMake (0, 44, 320, 416);

Pero no está funcionando. ¿Cualquier sugerencia?


Establecer el marco en viewWillAppear

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


Solo quiero agregar un poco más. La razón para cambiar la vista de un UIViewController no funciona en viewDidLoad es debido a la llamada [window makeKeyAndVisible] , que generalmente se llama después de su viewDidLoad . Esta llamada cambiará el marco de window.rootViewController para igualar el marco de la ventana. Puedes probar esto cambiando el view.frame de UIViewController DESPUÉS de [window makeKeyAndVisible] , y los cambios se mantendrán.

viewWillAppear y viewDidAppear se llaman dentro de [window makeKeyAndVisible] pero una vez que se [window makeKeyAndVisible] el tamaño del marco de la vista.

La advertencia es que solo el controlador más alto que es el rootViewController tiene su marco de vista cambiado automáticamente. Esto NO afecta ningún childViewControllers conectado al rootViewController .