如何制作透明的UIWebView


117

我有一个带有的应用程序,UITableView并且每行都有一个相应的详细信息视图。在详细视图中,我必须显示一些文本和背景图像(每行文本不同,但图像保持不变)。我认为,最简单的方法是将文本放在.rtf文件中,然后在中显示UIWebView。然后在UIImageView后面放一个UIWebView

我试图将UIWebViewIB中的不透明度设置为零,但这没有帮助。

你能帮助我吗?

Answers:


302

我建议:

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

(在Interface Builder中设置这些属性将适用于iOS 5.0+,但对于iOS 4.3,必须在代码中设置backgroundColor )

并将其包含到您的HTML代码中:

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

适用于iOS5。至少在模拟器中。
杰森·麦克雷里

1
我能够在IB中设置不透明度和backgroundColor。对我来说,样式标签使它无法正常工作。
devinfoley

如果仅将这些字符串作为代码编写,则此方法适用于4.2.1。如果您在iterface生成器中设置了相同的选项,那么您将不会获得透明背景
Gargo 2012年

2
<body style="background-color: transparent;">似乎是可选的,至少在最近的IOS版本。
zeroimpl 2014年

21

使用下面的递归方法从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];
  }
}

不要忘记写webView.opaque = NO;
Nilesh Kikani'2

1
呃,我们在这里说什么“梯度”?
Greg Maletic 2012年

7

快速更新:

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

再说一次,别忘了设置

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

或者,最好在样式表中使用内联样式代替内联样式:

body {
     background-color: transparent
}

1
我不需要设置身体样式。但是我必须在代码中设置背景色和不透明。
安德烈(Andrej)


4

在XCode 6.x中,取消选中不透明,并将Background的不透明度更改为0%。我认为其他XCode版本也可以使用。在此处输入图片说明


3

通过转到“属性检查器”并取消选中“绘图不透明”,可以使UIWebView透明。

我的HTML代码仅供参考。

    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

要删除滚动并使其UIWebView透明,请尝试以下代码:

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中,

webView.backgroundColor = .clear
openSourceLicensesWebView.isOpaque = false
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.