web-dev-qa-db-ja.com

UIWebView使用時の奇妙なパディング/マージン

広告を含むUIWebViewを持つアプリを作成しています。ビューのサイズは、広告(画像)自体と同じです。それでも、UIWebView内には、画像の左上にある種の白い余白/パディングがあります。リンクされた画像をチェックしてください:

alt text

実際には、このパディングによっても画像は右下に押し下げられます。

白いパディングを削除する方法はありますか?

前もって感謝します!

23
Nicsoft

基本的に、すべてのブラウザは、ページの端の周りにその空白を追加して、Netscape 1のように下位互換性を持たせます。WebビューにロードするHTMLで、CSSを使用してそれを削除できます。

body { margin: 0; padding: 0; }

HTMLをWebビューにロードせず、画像ファイルの直接URLのみをロードする場合は、a)基本的なHTML(head、body、imgタグ)でラップするか、b )画像を自分でダウンロードし(たとえばNSURLConnectionを使用)、UIImageViewに直接表示します。

51
Sixten Otto

私はこれが古い投稿であることを知っていますが、誰かが同じ問題を抱えている場合に備えて。次のコードをwebViewDidFinishLoadデリゲートメソッドに追加することで、同じ問題を修正することができました。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
    [webView stringByEvaluatingJavaScriptFromString:padding];
}

上記のコードが追加された最初のバナーを見てください。そして、コードのない一番下のもの。

enter image description here

40

@thenextmillionairの素晴らしい答えの修正として、コードを次のように配置します。

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
    [webView stringByEvaluatingJavaScriptFromString:padding];
}

webViewDidFinishLoadとは対照的です。コードがwebViewDidFinishLoadにある場合、パディング付きで画面に表示された後、UIWebViewが再配置されます。それをwebViewDidStartLoadに入れることで、この醜さを排除します。

4
Ser Pounce