uiwebview pas de redimensionnement après la modification de l'orientation paysage
Je suis codage d'une application iPhone dans lequel j'ai un UIWebView
que les charges d'un site web en responsive design.
Le problème que j'ai c'est quand je tourne les appareils de paysage: la UIWebView
tourne mais il conserve la même largeur que le mode portrait.
J'ai passé les 5 dernières heures à chercher sur le net, j'ai trouvé quelques solutions que j'ai utilisé mais sans succès...
dans ma page html, je suis en utilisant
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
j'ai essayé d'utiliser
<meta name="viewport" content="width=device-width" />
rien n'a changé, dans mon code, je suis la mise en œuvre de la fonction suivante à gérer la rotation, mais il ne donne rien
- (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation
{
[self.myWebView stringByEvaluatingJavaScriptFromString:
[NSString stringWithFormat:
@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ",
(int)self.myWebView.frame.size.width]];
NSLog(@"orientation width: %d", (int)self.myWebView.frame.size.width);
}
J'ai aussi coché la case "à l'Échelle de la Page pour s'Adapter à la case à cocher",
(en utilisant xcode 5, avec un iphone4s et ios7)
OriginalL'auteur CodeLion | 2013-09-27
Vous devez vous connecter pour publier un commentaire.
Essayez de définir des contraintes sur la UIWebView. Lorsque la Vue en rotation, les contraintes d'espace doit ajuster automatiquement.
Dans le storyboard, regardez pour les icônes de menu dans le coin inférieur droit. Sélectionnez la mise en page automatique de l'icône (qui ressemble à un tie fighter), puis sélectionnez "Ajouter un Manque de Contraintes" ou " Réinitialiser Suggéré des Contraintes.
Je ne suis pas sûr pourquoi, mais en spécifiant "à l'Envers" dans le Déploiement Général page d'Info, ou dans le projet plist ne semble pas fonctionner. J'ai toujours ajouter cette méthode pour mon principal-vue-contrôleur pour prendre soin de ce problème, ainsi que d'une s'assurer que toutes les autres orientations sont prises en charge:
- (NSUInteger)supportedInterfaceOrientations { return (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown); }
Depuis les iPhones ne permettent pas aux utilisateurs de verrouiller l'orientation en mode paysage, mode portrait à l'envers en mode sert cette fonction. Sur ipad, toutefois, vous êtes susceptibles de trouver que le portrait à l'envers vers le bas mode en fait, il fonctionne comme prévu. Il est suggéré de simplement coller avec ces paramètres par défaut, sauf si vous avez un spécifique de cas d'utilisation pour justifier quelque chose de différent.
+1 pour les tie-fighter de référence, et aussi que votre solution a fonctionné, merci.
OriginalL'auteur Scotty
enfin, cela a résolu mon problème
OriginalL'auteur CodeLion