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?
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;">
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];
}
}
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
}
Pour Swift 3 et Xcode 8
self.webView.isOpaque = false;
self.webView.backgroundColor = UIColor.clear
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.
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];
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];
}
}
}
}