2010-09-25 16 views
0

J'ajoute une barre de navigation, un webview et une barre d'outils (de haut en bas) comme sous-vues de la vue de mon viewcontroller. Je veux que la barre de navigation et la hauteur de la barre d'outils rétrécissent un peu en orientation paysage, donc j'utilise un masque autoresizing pour rendre la hauteur flexible. (UIViewAutoresizingFlexibleHeight fera navigationbar et barre d'outils de la hauteur rétrécissent de 44 à environ 30):Comment redimensionner webview correctement en mode paysage dans l'iPhone?

webNavBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; 
webToolBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin; 
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

Maintenant, je trouve que lorsque je tourne l'appareil en mode paysage, il y aura deux barres blanches en blanc sur le haut et le bas de la webview (la hauteur de chaque barre vide est de 44-30). La barre de navigation et la barre d'outils semblent être dans la bonne position. Y a-t-il un moyen de redimensionner le webview et de combler les lacunes?

Répondre

0

Etes-vous sûr que les marges d'auto-sélection sont correctement définies pour le WebView? Pourrait toujours faire:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    webView.frame = self.view.frame; 
} 

Aucune idée si cela va fonctionner mais vaut le coup.

+0

Merci pour votre réponse, mais la WebView n'est pas une vue plein écran. Quoi qu'il en soit, vous me donnez une idée que je peux réinitialiser son cadre pour obtenir une taille correcte. –

+1

Assurez-vous également d'appeler jusqu'à la méthode 'super' si vous faites quelque chose dans la super classe. – Rich

0

Vérifiez ce lien. UIWebView not re-sizing after changing orientation to landscape

Cela a fonctionné pour moi: - Ajoutez le code suivant au contrôleur qui a WebView: -

(void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [self.myWebView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
} 
+0

Assurez-vous également d'appeler la méthode 'super' si vous faites quelque chose dans la super classe. – Rich