web-dev-qa-db-fra.com

Comment faire un UIWebView transparent

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 d'arrière-plan (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, placez un UIImageView derrière le UIWebView.

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

Pouvez-vous m'aider?

116
Knodel

Je recommande:

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

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

Et incluez ceci dans votre code HTML:

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

Utilisez la méthode récursive ci-dessous pour supprimer le dégradé 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];
  }
}
21
Nilesh Kikani

Mise à jour rapide:

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

Et encore, n'oubliez pas de définir

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

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

body {
     background-color: transparent
}
7
kmiklas

Pour Swift 3 et Xcode 8

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

Dans XCode 6.x, décochez Opaque et remplacez Opacité de l'arrière-plan en %. Je pense que d'autres versions de XCode fonctionneront également.enter image description here

4
Pyae Thu Aung

J'ai été en mesure de rendre mon UIWebView transparent en sélectionnant "Inspecteur des attributs" et en décochant l'option Dessin opaque.

Mon code HTML juste 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];
3
Xavier John

Pour supprimer les parchemins et rendre le UIWebView transparent, essayez le 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];  
               }  
          }  
     }   
}  
0
damithH