私は自分でこの問題を抱えていました。幅を設定し、回転時に更新して、ユーザーがページを拡大縮小およびズームできるようにしたかったのです(現在の回答は最初のものを提供しますが、副作用として後者を防ぎます..そのため、ビューの幅を向きに合わせて正しく保ちながら、ズームを可能にする修正を思いつきましたが、それは非常に簡単ではありません。
まず、表示している Web ページに次の Javascript を追加します。
<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>
次に、 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation メソッドに以下を追加します。
float availableWidth = [EmailVC webViewWidth];
NSString *stringJS;
stringJS = [NSString stringWithFormat:@"document.body.offsetWidth"];
float documentWidth = [[_webView stringByEvaluatingJavaScriptFromString:stringJS] floatValue];
if(documentWidth > availableWidth) return; // Don't perform if the document width is larger then available (allow auto-scale)
// Function setViewPortWidth defined in EmailBodyProtocolHandler prepend
stringJS = [NSString stringWithFormat:@"setViewPortWidth(%f);",availableWidth];
[_webView stringByEvaluatingJavaScriptFromString:stringJS];
ビューポータルのコンテンツ設定をさらに変更することで、追加の微調整を行うことができます。
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
また、onresize などの JS リスナーを配置して再スケーリングをトリガーできることも理解していますが、Cocoa Touch UI フレームワークから実行しているので、これはうまくいきました。
これが誰かを助けることを願っています:)