Latar belakang UIWebView diatur ke Warna Jelas, tetapi tidak transparan


140

Saya sedang mengembangkan aplikasi iOS 4 menggunakan iOS SDK versi terbaru dan XCode 4.2.

Saya memiliki XIB dengan a UIWebViewdengan Alpha = 1.0 , Background diatur ke Clear Color dan Opaque tidak diatur. Pada XIB ini saya menyiapkan gambar sebagai latar belakang dengan kode ini:

- (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;
}

Ini UIWebViewmenunjukkan html statis:

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

Pada simulator iOS 5, latar belakangnya transparan, tetapi pada perangkat iOS 4 berwarna abu-abu.

Ada petunjuk?


coba letakkan UIImageView di tampilan web Anda di pembuat antarmuka dan setel gambar Anda.
— Stas

Terima kasih atas jawaban Anda, tetapi tampilan web tidak memenuhi seluruh layar.
— VansFannel

1
kemungkinan duplikat dari Cara membuat UIWebVIew yang transparan
— Vladimir

Jawaban:


360

Juga atur:

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

3
Ini hanya berfungsi untuk saya jika saya mengatur warna latar belakang dan kekaburan setelah memanggil loadHTMLString. Sepertinya loadHTMLString me-reset kedua nilai tersebut.
— Justin Anderson

1
Saya tahu pertanyaannya adalah untuk iOS, tetapi jika untuk OSX, pertanyaan dan jawaban ini menyelesaikan masalah dan juga dapat membantu mereka yang menggunakan iOS.
— Volomike

Solusi ini masih berfungsi di iOS 12.1, Xcode 10.1 dan Swift.
— Bhavin_m

15
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

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

9

Selain mengatur latar belakang tampilan web Anda ke warna yang jelas, pastikan juga Anda mengatur buram ke false.


Terima kasih atas jawaban Anda, tetapi buram tidak diatur pada Interface Builder.
— VansFannel

Coba atur setelah memanggil [super viewDidLoad: animated]; .
— Elegia

Hai, saya memiliki masalah yang sama .. bekerja di ios5 tetapi latar belakang abu-abu di ios4. Bagaimana Anda mengatasinya?
— user542584

3
webView.opaque = NO;

webView.backgroundColor = [UIColor clearColor];

3

Anda dapat mencoba kode ini (saya tahu, itu tidak aman, tetapi berfungsi bahkan untuk 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

Untuk Tujuan

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

Pastikan untuk memasukkan ini ke dalam kode HTML Anda:

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

atau

 <body style="background:none">

0

Versi Swift Terbaru (sesuai kebutuhan):

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

Hapus garis delegasi jika tidak diperlukan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.