UIWebViewの背景はクリアカラーに設定されていますが、透明ではありません


140

iOS SDK最新バージョンとXCode 4.2を使用してiOS 4アプリケーションを開発しています。

私はとのXIB持っているUIWebViewアルファ= 1.0を背景にセットクリアカラー不透明が設定されていません。このXIBでは、次のコードを使用して背景として画像を設定しました。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]];
        self.view.backgroundColor = background;
        [background release];
    }
    return self;
}

UIWebView静的なhtmlのを示しています。

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>

iOS 5シミュレーターでは、その背景は透明ですが、iOS 4デバイスでは灰色です。

どんな手掛かり?


インターフェイスビルダーのWebViewにUIImageViewを配置して、画像を設定してみてください。
Sts

回答ありがとうございます。Webビューが画面全体に表示されません。
VansFannel 2011

回答:


360

また設定:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

3
これは、loadHTMLStringを呼び出した後で背景色と不透明度を設定した場合にのみ機能します。loadHTMLStringはこれらの値を両方ともリセットするようです。
ジャスティンアンダーソン

1
質問はiOSに関するものでしたが、OSXの場合、この質問と回答は問題を解決し、iOSのユーザーにも役立つ場合があります。
Volomike、2015

このソリューションは、iOS 12.1、Xcode 10.1、およびSwiftでも機能します。
Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

     /*for html please set this*/
     <body style="background:none">

9

WebViewの背景をクリアカラーに設定する以外に、opaqueをfalseに設定していることも確認してください。


回答ありがとうございます。ただし、Interface Builderには不透明が設定されていません。
VansFannel 2011

[super viewDidLoad:animated]を呼び出した後で設定してください。。
Elegia

こんにちは、私は同じ問題を抱えています。ios5では機能しますが、ios4では灰色の背景です。どのように解決しましたか?
user542584


3

あなたはこのコードを試すことができます(私は知っています、それは安全ではありませんが、それはios5でも動作します):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}


3
NSString *content=@"example clear background color UIWebview";
NSString *style=[NSString stringwithformat:@"<html><head><style>body {background-color:transparent;}</style></head><body>%@</body></html>",content];
[myWebview loadhtmlstring:style baseurl:nil];

1

目的のために

webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];

これをHTMLコードに必ず含めてください。

<body style="background-color: transparent;">

または

 <body style="background:none">

0

最新のSwiftバージョン(必要に応じて):

lazy var webView: UIWebView = {
    let view = UIWebView()
    view.delegate = self
    view.backgroundColor = .clear
    view.isOpaque = false
    return view
}()

不要な場合はデリゲートラインを削除する

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.