1

これは、iOSアプリ内のUIWebViewで使用されています。通常のモバイルSafariでは正常に動作するように見えますが、埋め込みブラウザでは動作しません。

基本的に、私はいくつかのHTMLとCSSを持っています。HTML要素にはパディングが全体に適用されていますが、BODY要素には適用されていません。私が期待しているのは、空きスペースに囲まれたBODYの内容です。デスクトップSafariでは、これは機能します。しかし、何らかの理由で、Mobile Safari(埋め込みSafari)では、HTMLタグの右パディングが無視されるか、BODYタグが引き伸ばされている可能性があります-どちらかはわかりません。説明については、次のスクリーンショットを参照してください。

ここに画像の説明を入力してくださいモバイルサファリ

Mobile Safariの例では、パディングがどのように消えているかに注目してください。注:これらはフォトショップでモックアップした画像であり、スクリーンショットではありませんが、動作は同じです。

コードは次のとおりです(もちろん簡略化されています)。

<html>
<head>
<style>
html {
    background-color: #FFF;
    padding: 10px;
}
body {
    background-color: #0F0;
}
</style>
<body>
<div> ... some stuff ... </div>
</body>
</html>

何かがBODYタグの幅を広げていないことを確認するために、不要なHTMLとCSSをすべて削除し、基本的に、画像が示すように、背景が緑色の空のBODYタグを作成してみました。これにはまだ同じ問題があります。また、HTMLタグをパディングする代わりに、BODYタグの周囲にマージンを入れてみましたが、これは機能しません。

編集:ここで説明したように、ボックスモデルをborder-boxに設定しようとしましたが、機能しません。

何か案は?

4

2 に答える 2

3

この答えから(それは私のために働いた)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
    [webView stringByEvaluatingJavaScriptFromString:padding];
}
于 2014-04-04T11:27:12.357 に答える
1

UIWebViewがどのディメンションでも初期化されていないことが判明しました。たとえば、明示的に初期化されていませんでした[[UIWebView alloc] initWithFrame:....]。適切な寸法で明示的に初期化すると、問題が修正されました。

于 2012-12-18T06:28:04.500 に答える