Şeffaf bir UI nasıl yapılır


117

UITableViewHer satır için a ve ilgili ayrıntı görünümüne sahip bir uygulamam var . Ayrıntılı görünümde bir metin ve bir arka plan görüntüsü göstermem gerekiyor (metin her satır için farklı, ancak görüntü aynı kalıyor). Kanımca en kolay yol, metni bir .rtf dosyasına koymak ve bir .rtf dosyasında görüntülemektir UIWebView. O halde UIImageViewarkasına bir koyun UIWebView.

UIWebViewIB'de 'nin opaklığını sıfıra ayarlamaya çalıştım , ancak yardımcı olmadı.

Bana yardım eder misiniz?

Yanıtlar:


302

Ben tavsiye ediyorum:

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

(Arayüz Oluşturucu'da bu özelliklerin ayarlanması iOS 5.0+ için çalışacaktır, ancak iOS 4.3 için kodda backgroundColor'u ayarlamanız gerekir )

Ve bunu HTML kodunuza ekleyin:

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

İOS 5 çalışır. En azından simülatörde.
Jason McCreary

1
IB'de opaklık ve backgroundColor ayarlayabildim. Benim için stil etiketi bunun çalışmasını engelleyen şeydi.
devinfoley

bu dizeleri yalnızca kod olarak yazarsanız bu yol 4.2.1 için çalışır. Yinelenen yüz oluşturucuda aynı seçenekleri ayarlarsanız, şeffaf bir arka plan elde
edemezsiniz

2
En <body style="background-color: transparent;">azından son iOS sürümlerinde isteğe bağlı görünüyor.
zeroimpl

21

Degradeyi UIWebView'dan kaldırmak için aşağıdaki özyinelemeli yöntemi kullanın:

[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];
  }
}

webView.opaque yazmayı unutmayın = HAYIR;
Nilesh Kikani

1
Burada hangi "gradyan" dan bahsediyoruz?
Greg Maletic

7

Hızlı güncelleme:

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

Ve yine, ayarlamayı unutma

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

Daha da iyisi, stil sayfanızda satır içi stil yerine:

body {
     background-color: transparent
}

1
Vücut stilini belirlememe gerek yoktu. Ancak kodda arka plan rengini ve opaklığı ayarlamam gerekiyordu.
Andrej


4

XCode işaretini 6.x opak ve değişim arka plan opaklığını için % 0 . Diğer XCode sürümlerinin de çalışacağını düşünüyorum.görüntü açıklamasını buraya girin


3

'Attributes Inspector'a gidip Drawing Opaque'ın işaretini kaldırarak UIWebView'umu şeffaf hale getirebildim.

HTML kodum sadece referans içindir.

    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

Parşömenleri kaldırmak ve UIWebViewsaydam yapmak için aşağıdaki kodu deneyin:

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

Swift 4.x'te,

webView.backgroundColor = .clear
openSourceLicensesWebView.isOpaque = false
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.