Bagaimana membuat UIWebView transparan


117

Saya memiliki aplikasi dengan UITableViewdan tampilan detail yang sesuai untuk setiap baris. Dalam tampilan detail saya harus menampilkan beberapa teks dan gambar latar belakang (teks berbeda untuk setiap baris, tetapi gambarnya tetap sama). Cara termudah, menurut saya, adalah dengan meletakkan teks dalam file .rtf dan menampilkannya dalam file UIWebView. Kemudian letakkan saja di UIImageViewbelakang UIWebView.

Saya sudah mencoba untuk mengatur UIWebViewopacity ke nol di IB, tapi itu tidak membantu.

Bisakah kamu membantuku?

Jawaban:


302

Saya merekomendasi:

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

(pengaturan properti ini di Interface Builder akan berfungsi untuk iOS 5.0+, tetapi untuk iOS 4.3 Anda harus mengatur backgroundColor dalam kode )

Dan sertakan ini ke dalam kode HTML Anda:

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

Bekerja iOS 5. Setidaknya di simulator.
Jason McCreary

1
Saya bisa mengatur opacity dan backgroundColor di IB. Bagi saya tag gaya itulah yang membuat ini tidak berfungsi.
devinfoley

cara ini berfungsi untuk 4.2.1 jika Anda menulis string ini sebagai kode saja. Jika Anda mengatur opsi yang sama di pembuat iterface daripada Anda tidak akan mendapatkan latar belakang transparan
Gargo

2
The <body style="background-color: transparent;">tampaknya opsional, setidaknya dalam versi iOS baru-baru ini.
zeroimpl

21

Gunakan metode rekursif di bawah ini untuk menghapus gradien dari UIWebView:

[webView setBackgroundColor:[UIColor clearColor]];
[self hideGradientBackground:webView];


- (void) hideGradientBackground:(UIView*)theView
{
  for (UIView * subview in theView.subviews)
  {
    if ([subview isKindOfClass:[UIImageView class]])
      subview.hidden = YES;

    [self hideGradientBackground:subview];
  }
}

jangan lupa untuk menulis webView.opaque = NO;
Nilesh Kikani

1
Eh, "gradien" apa yang kita bicarakan di sini?
Greg Maletic

7

Pembaruan cepat:

webView.opaque = true
webView.backgroundColor = UIColor.clearColor()

Dan lagi, jangan lupa set

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

Atau lebih baik lagi, daripada gaya sebaris, di lembar gaya Anda:

body {
     background-color: transparent
}

1
Saya tidak perlu mengatur gaya tubuh. Tetapi saya harus mengatur warna latar belakang dan buram dalam kode.
Andrej


4

Di XCode 6.x hapus centang Opaque dan ubah opacity Background menjadi 0% . Saya pikir versi XCode lain juga akan berfungsi.masukkan deskripsi gambar di sini


3

Saya bisa membuat UIWebView saya transparan dengan membuka 'Attributes Inspector' dan menghapus centang pada Drawing Opaque.

Kode HTML saya hanya untuk referensi.

    UIWebView* webView =(UIWebView *) [cell viewWithTag:100];
    NSString* htmlContentString = [NSString stringWithFormat:
                                   @"<html>"
                                   "<style type='text/css'>html,body {margin: 0;padding: 0;width: 100%%;height: 100%%;}</style>"
                                   "<body>"
                                   "<table style='border:1px solid gray; border-radius: 5px; overflow: hidden;color:white;font-size:10pt' cellspacing=\"0\" cellpadding=\"1\" align='right'><tr>"
                                   "<td>Hello</td><td>There</td>"
                                   "</tr></table>"
                                   "</body></html>"
                                   ];
    [webView loadHTMLString:htmlContentString baseURL:nil];

0

Untuk menghapus gulungan dan membuatnya UIWebViewtransparan, coba kode di bawah ini:

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

for(UIView *view in webView.subviews){   
     if ([view isKindOfClass:[UIImageView class]]) {  
          // to transparent   
          [view removeFromSuperview];  
     }  
     if ([view isKindOfClass:[UIScrollView class]]) {  
          UIScrollView *sView = (UIScrollView *)view;  
          //to hide Scroller bar 
          sView.showsVerticalScrollIndicator = NO;  
          sView.showsHorizontalScrollIndicator = NO;
          for (UIView* shadowView in [sView subviews]){  
               //to remove shadow  
               if ([shadowView isKindOfClass:[UIImageView class]]) {  
                    [shadowView setHidden:TRUE];  
               }  
          }  
     }   
}  

0

Di Swift 4.x,

webView.backgroundColor = .clear
openSourceLicensesWebView.isOpaque = false
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.