2010-09-05 3 views
111

J'ai une application avec un UITableView et une vue détaillée correspondante pour chaque ligne. Dans la vue détaillée, je dois afficher du texte et une image de fond (le texte est différent pour chaque ligne, mais l'image reste la même). Le moyen le plus simple, à mon avis, est de placer le texte dans un fichier .rtf et de l'afficher dans un UIWebView. Ensuite, il suffit de mettre un UIImageView derrière le UIWebView.Comment faire un UIWebView transparent

J'ai essayé de définir l'opacité UIWebView à zéro dans IB, mais cela n'a pas aidé.

Pouvez-vous me aider?

Répondre

293

Je recommande:

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

(définition de ces propriétés dans Interface Builder fonctionnera pour iOS 5.0+, mais pour iOS 4.3, vous devez définir le backgroundColor dans le code)

et de l'inclure dans votre code HTML:

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

Works iOS 5. Au moins dans le simulateur. –

+3

ne fonctionne pas pour moi dans iOS 5 –

+1

J'ai été en mesure de définir l'opacité et backgroundColor dans IB. Pour moi, l'étiquette de style était ce qui empêchait cela de fonctionner. – devinfoley

21

Utilisez la méthode récursive ci-dessous pour supprimer gradient de 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]; 
    } 
} 
+0

travaille pour moi en simulateur.N'a pas encore testé sur l'appareil. – zumzum

+1

Il va fonctionner sur l'appareil aussi !!!! –

+0

ne pas oublié d'écrire webView.opaque = NO; –

0

Pour retirer les rouleaux et faire la transparence UIWebView, essayez ce code ci-dessous:

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

j'ai pu faire mon UIWebView transparent en allant à « Attributs inspecteur » et décochant Dessin Opaque.

Mon code HTML seulement pour référence.

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

mise à jour Swift:

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

Et encore une fois, ne pas oublier de mettre

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

Ou mieux encore, au lieu d'un style en ligne, dans votre feuille de style:

body { 
    background-color: transparent 
} 
+1

Je n'avais pas besoin de définir le style de corps. Mais j'ai dû définir la couleur de fond et opaque dans le code. – Andrej

4

En XCode 6.x décocher Opaque et modifiez Opacité de l'arrière-plan à 0%. Je pense que d'autres versions de XCode fonctionneront également. enter image description here

4

Pour Swift 3 et Xcode 8

self.webView.isOpaque = false; 
self.webView.backgroundColor = UIColor.clear