2010-01-01 8 views
6

Tengo mi aplicación configurada para que funcione la rotación automática. Cosas como tableviewcontrollers y tabbarcontrollers automáticamente cambian de tamaño ellos mismos sin la necesidad de que escriba ningún código. Sin embargo, necesito mi vista web, etc. para cambiar el tamaño cuando el dispositivo se convierte en paisaje. Configuré:UIView autoresizingmask no funciona para mí

webView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

pero cuando giro el dispositivo, no cambia de tamaño. Estoy implementando esto incorrectamente?

Respuesta

4

implemento el siguiente en mi controlador de vista:

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    [self.webView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
} 

parece funcionar bien.

+0

Lo probé allí pero parece que no se llama cuando hago girar el simulador. Puse un NSLOG allí y no se imprime. – john

+1

¿Está poniendo esto en el controlador de vista? ¿Está anulando otros métodos de rotación, como '-shouldAutorotateToInterfaceOrientation:'? –

+2

Estoy usando su solución y funciona muy bien siempre que gire el dispositivo al menos una vez. Si mi vista se carga mientras está en el retrato, no se cambia el tamaño del tamaño de la pantalla, hasta que gire el dispositivo, por supuesto. ¿Cómo puedo configurarlo para que cambie el momento en que se carga la vista? –

16

Creo que finalmente descubrí esto. Parece que la vista raíz de un archivo NIB no le permite especificar ancho flexible y altura flexible para la máscara de aumento automático en el constructor de interfaz (al menos no a partir de 3.2). Echar un vistazo. Poner el siguiente código en su viewDidLoad parece solucionar el problema:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

lo hice después de la llamada super.

Cuestiones relacionadas