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.