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?

VansFannel
sumber
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];
Maulik
sumber
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">
dheerendra
sumber
9

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

Elegia
sumber
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];
Avinash651
sumber
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]];
}

Artem Stepanenko
sumber
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];
pengguna5742417
sumber
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">
Amr Angry
sumber
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

RichAppz
sumber