2012-07-08 18 views
5

Tengo un problema con mi UIWebView. Cuando la vista se carga, se carga bien en cualquier orientación, rellena toda la página perfectamente, etc.La rotación de paisaje de UIWebView no llena la vista

Sin embargo, si cargué en vertical, gire el dispositivo, la vista web no se llena completamente en el lado derecho y No puedo entender por qué.

Este es mi punto de vista hizo método de carga

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib 

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367); 

    }else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218); 
    } 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"]; 
    [measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil]; 
    measurementsWebView.scalesPageToFit = YES; 

} 

Si miro en constructor de interfaces que estoy tratando de encontrar el panel que me permite establecer la ampliación de la anchura o lo que se llame, pero todo lo que puede ver Es esto.

enter image description here

cualquier ayuda sería muy apreciada

Respuesta

1

En constructor de interfaces, el menú desplegable donde dice 'Diseño Rectángulo', haga clic en él y seleccione 'del rectángulo del marco'.

Como alternativa, puede anular el método willAnimateRotationToInterfaceOrientation: en su controlador de vista y establecer las coordenadas/tamaño manualmente como lo hizo en viewDidLoad.

+0

raro, incluso cuando hago eso no cambia el aspecto del menú ... Creo que tal vez deba volver a instalar xcode. Voy a probar shouldAutototateToInterfaceOrientation ahora ... sin embargo, eso cambiará el tamaño de UIView Frame para que se ajuste a la vista horizontal. – HurkNburkS

+0

Disculpa, quise escribir el método 'willAnimateRotationToInterfaceOrientation:'. De forma similar a cómo ha verificado la orientación en su método 'viewDidLoad', haga lo mismo aquí y ajuste el marco de la vista. – sooper

+0

Para su problema con el constructor de interfaz, le recomiendo que lea esta publicación [aquí] (http://stackoverflow.com/questions/9370072/xcode-4-3-not-presenting-autoresizing-panel-in-size-inspector) – sooper

4

En lugar de establecer el marco de forma manual, también se puede configurar las máscaras de auto-cambio de tamaño como:

measurementsWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

que cambiar el tamaño de la web View en caso de que no tiene otros elementos de la pantalla (que, me tómalo, no tienes, de los valores que has usado al cambiar el tamaño de measurementsWebView). O, directamente desde la punta, como se muestra en la siguiente imagen:

auto-resize from nib

Las máscaras se pueden configurar haciendo clic en las barras de color rojo en la caja llamada autosizing hacia la parte inferior izquierda.

3

viewDidLoad se ejecuta una vez, cuando se carga la vista.

Si desea ajustar manualmente el marco cuando se produce la rotación, agregue código para cambiar el tamaño en viewDidLayoutSubviews que se llama cada vez que la vista gira.

-(void)viewDidLayoutSubviews { 

    [super viewDidLayoutSubviews]; 

    self.measurementsWebView.frame = self.view.bounds; 

} 
+0

simple y fácil, gracias por esto – peroija

Cuestiones relacionadas