Ich hatte dieses Problem selbst und wollte sowohl die Breite einstellen als auch beim Drehen aktualisieren lassen und dem Benutzer erlauben, die Seite zu skalieren und zu zoomen (die aktuelle Antwort liefert die erste, verhindert aber die spätere als Nebeneffekt ) .. also habe ich mir einen Fix ausgedacht, der die Ansichtsbreite für die Ausrichtung korrekt hält, aber trotzdem das Zoomen ermöglicht, obwohl es nicht sehr einfach ist.
Fügen Sie zunächst das folgende Javascript zu der angezeigten Webseite hinzu:
<script type='text/javascript'>
function setViewPortWidth(width) {
var metatags = document.getElementsByTagName('meta');
for(cnt = 0; cnt < metatags.length; cnt++) {
var element = metatags[cnt];
if(element.getAttribute('name') == 'viewport') {
element.setAttribute('content','width = '+width+'; maximum-scale = 5; user-scalable = yes');
document.body.style['max-width'] = width+'px';
}
}
}
</script>
Fügen Sie dann in Ihrer - (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation-Methode Folgendes hinzu:
float availableWidth = [EmailVC webViewWidth];
NSString *stringJS;
stringJS = [NSString stringWithFormat:@"document.body.offsetWidth"];
float documentWidth = [[_webView stringByEvaluatingJavaScriptFromString:stringJS] floatValue];
if(documentWidth > availableWidth) return;
stringJS = [NSString stringWithFormat:@"setViewPortWidth(%f);",availableWidth];
[_webView stringByEvaluatingJavaScriptFromString:stringJS];
Zusätzliche Optimierungen können vorgenommen werden, indem weitere Einstellungen für den Inhalt des Ansichtsfensters geändert werden:
http://www.htmlgoodies.com/beyond/webmaster/toolbox/article.php/3889591/Detect-and-Set-the-iPhone--iPads-Viewport-Orientation-Using-JavaScript-CSS-and-Meta-Tags .htm
Ich verstehe auch, dass Sie einen JS-Listener für eine Größenänderung oder etwas Ähnliches verwenden können, um die Neuskalierung auszulösen, aber dies hat bei mir funktioniert, da ich es über Cocoa Touch UI-Frameworks mache.
Hoffe das hilft jemandem :)