2009-02-15 9 views
0

J'utilise un UIWebView avec du texte. Lorsque l'iPhone est mis en mode paysage, le texte ne remplit pas la largeur UIWebView plus large. J'utilise des balises P (paragraphe), qui ne devraient pas affecter la largeur du paysage de remplissage de contenu. Les sauts de ligne visibles en mode portrait restent les mêmes en mode paysage. Dans Interface Builder, je n'ai rien changé. Dans IB Inspector, la taille de la vue Web a toutes les barres pleines sous AutoSizing, ce qui signifie qu'elle doit remplir la largeur du paysage à droite?Largeur de remplissage dans l'orientation paysage UIWebView (iPhone)?

+0

Est-ce que les aperçus ont également la taille automatique correctement définie? – epatel

+0

Les vues fonctionnent comme ceci: mainwindow -> RootController (tableview) -> SubController (vue de table) -> detailview (UIWebView). SubController est créé dans le code. Les autres ressemblent à UIWebView dans IB. Y at-il quelque chose dans le code que je peux vérifier pour SubController? – 4thSpace

+0

Mais comment l'aperçu peut-il affecter quelque chose s'il n'est pas visible? La seule vue affichée est UIWebView, qui est correctement définie dans IB (je suppose). – 4thSpace

Répondre

0

J'ai le même problème. Rechargement ne fonctionne pas, la seule chose qui semble aider un peu est d'ajouter la ligne suivante au code:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth;

(je place dans la fonction willAnimateFirstHalfOfRotationToInterfaceOrientation)

Il conserve encore une petite marge blanche à droite, mais son beaucoup mieux que la valeur par défaut. Remarque: vous devez appliquer ceci sur self.view et non sur l'instance UIWebView, cela ne fonctionnera pas.

En attente d'une solution d'Apple ..

Pieter

+0

Cela n'a pas fait de différence pour moi. – 4thSpace

1

maintenant essayé autour avec le même problème, finalement fait après avoir examiné en détail à « WhichWayIsUp » -Exemple d'Apple.

Pour être bref:

1) Désactiver dans le View Inspecteur | - | et < ->

2) `changer le mode d'affichage de la Webview à "Aspect de remplissage"

Et le tour est joué;)

Gardez les vibes, Maniac

2

Voici un tweak Bien que ce ne soit pas une bonne chose à faire, Apple devrait gérer quelque chose

Comme vous avez remarqué que les choses fonctionnent lorsque WebView est initialisé en mode portrait, vous passez ensuite en mode paysage. Donc, ce que vous pouvez faire est toujours d'initialiser votre webview avec des limites portrait, ajouter un sélecteur qui rappelle après 2 ~ 3 secondes et définit le cadre de webView en fonction de vos besoins.

Maintenant que le contenu a commencé le chargement lorsque la taille du cadre de votre WebView était selon portrait (disons 320460) afin de convertir votre WebView au paysage ajustera automatiquement votre affichage Web si vous avez cette ligne dans votre code

[webViewObjet_ setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 

est Ci-dessous l'extrait de code

- (id) initWithFrame:(CGRect)frame 
{ 
    if (self = [super initWithFrame:frame]) 
    { 
     webViewObjet_ = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
     ..... 
    } 
} 

- (void) webViewDidStartLoad:(UIWebView *)webView 
{ 
    .....  
    [self performSelector:@selector(chuss) withObject:nil afterDelay:3]; 
    // call the function chuss after 3 second 
} 

- (void) chuss 
{ 
    webViewObjet_.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); 
    [webViewObjet setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 
} 
0

Cela paraître étrange, mais il fonctionne:

Si le UIWebView est à l'intérieur d'un U INavigationController, tout ira bien. J'ai eu le même problème, donc je l'ai juste enveloppé dans un UINavigationController et le problème était parti.

Pour une raison quelconque, UINavigationController fait fonctionner les rotations comme un charme.

Questions connexes