2012-10-02 27 views
5

Hojeé la mayoría de las preguntas e intenté casi todo. Pero la parte mala es que el problema todavía está allí.UIWebview en una vista modal se muestra en vertical en modo Paisaje

Tengo un UIVIew que siempre se inicia en modo horizontal y presento una segunda vista (detailView) como una vista modal de pantalla completa.

El detailview tiene un UIwebview en la parte superior.

Cuando presento el detailView como vista modal, la vista web se muestra en modo vertical.

Voy a volver "YES" en shouldAutoRotateToInterfaceOrientation y también han establecido autoresize, autoresizingMask y scalePageToFit propiedades.

Cuando giro el dispositivo, y cuando el detailView está al frente, la vista web se arregla para patinar correctamente.

El problema es solo cuando presento el modalView por primera vez.

La rotación del dispositivo está ajustando la disposición correctamente.

+0

y también he intentado fijar la barra de estado en viewWillAppear de vista modal ., es decir, [[UIApplication sharedApplication] setStatusBarOrientation: self.interfaceOrientation] ... Incluso esto no funciona –

+0

: intente esto - crate one viewController personalizado (digamos - FirstViewController) de la clase UIViewController. en este VC, admite ambas orientaciones (Puerto y Tierra).Luego crea SecondViewController, que será la subclase de FirstViewController, obviamente en esto crearás UIView con modo horizontal y harás lo mismo más que tú. – Nayan

+1

Los términos 'landscape' o' portrait' están relacionados con 'UIViewController' pero no con' UIView'. Entonces, ¿podría aclarar qué quiere decir con el modo vertical de 'UIWebView'. ¿Qué método usas para mostrar 'UIWebView' en la parte superior de' detailview'? – onegray

Respuesta

0

OK. En primer lugar, la pregunta que había publicado no estaba clara. Mi pregunta era que, cuando cargaba una vista web, en vertical, cargaba los elementos de la vista web en modo horizontal (CSS) y se cargaba como modo vertical (CSS) en orientación horizontal.

Resulta que no estaba aplicando el estilo CSS correcto.

El arreglo que hice fue: En el método viewDidLoad y willAnimateRotation, estoy publicando una notificación a mi javascript para actualizar el estilo basada en la orientación :)

+0

¿podría mostrar el código para esto? Estoy teniendo los mismos problemas pero no tengo idea cuando se trata de javascript – iOSProgrammingIsFun

+0

@iOSProgrammingIsFun ¿Puede explicar su problema? Hice esto alguna vez. Necesito buscar mi código. –

+0

Ok, tengo un controlador de visualización A presenta el controlador B de forma modal y en estilo de pantalla completa. Inside VC B es una vista en pantalla completa. Esa vista web se usa para mostrar un sitio web específico, digamos Wikipedia. Si la aplicación se ejecuta en vertical, entonces la página web se formatea para ser vertical y se escala para ajustarse a la vista web, incluso aunque scalestofit no esté marcado en el constructor de interfaz. Si abrí la misma página en el safari móvil, el ancho de la página excede el ancho de la pantalla y es más legible, también se puede ampliar, mientras que la vista web en VC B no. Además, si se gira el VC B, la página se ensucia – iOSProgrammingIsFun

1

Si está ejecutando la aplicación en iOS 6 que necesitará el código siguiente en el controlador de vista modal para apoyar la orientación horizontal:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 

- (BOOL) shouldAutorotate { 
    return YES; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
} 

Además, asegúrese de que está probando en el dispositivo real en oposición al simulador porque la rotación automática se comporta de manera diferente en el simulador.

3

Por lo que yo sé, ModalViews en el iPhone no es compatible con Landscape View. El caso puede ser diferente para iPhone 5.

Pero parece que está configurando el ModalView no el WebView en horizontal, sugiero un enfoque diferente para manejar esto.

Por ejemplo, podría animar la DetailView en como un ModalView por lo que comienza en la orientación correcta

0

que va a hacer el truco:

CGAffineTransform transform = CGAffineTransformIdentity; 
webView.transform = CGAffineTransformRotate(transform,-M_PI/2); 
Cuestiones relacionadas