Ios 如何创建透明的UIWebView

Ios 如何创建透明的UIWebView,ios,iphone,cocoa-touch,uiwebview,Ios,Iphone,Cocoa Touch,Uiwebview,我有一个带有UITableView的应用程序,每行都有一个相应的详细视图。在细节视图中,我必须显示一些文本和背景图像(每行的文本不同,但图像保持不变)。在我看来,最简单的方法是将文本放在.rtf文件中,并在UIWebView中显示。然后在UIWebView后面放一个UIImageView 我曾尝试在IB中将UIWebView的不透明度设置为零,但没有效果 你能帮我吗?我推荐: webView.opaque = NO; webView.backgroundColor = [UIColor clea

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

我曾尝试在IB中将
UIWebView
的不透明度设置为零,但没有效果

你能帮我吗?

我推荐:

webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
(在Interface Builder中设置这些属性适用于iOS 5.0+,但对于iOS 4.3,必须在代码中设置背景色)

并将其包含到HTML代码中:

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

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

要删除滚动条并使
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];  
               }  
          }  
     }   
}  

通过转到“属性检查器”并取消选中“图形不透明”,我可以使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];
UIWebView*webView=(UIWebView*)[带标记的单元格视图:100];
NSString*htmlContentString=[NSString stringWithFormat:
@""
html,正文{边距:0;填充:0;宽度:100%%;高度:100%%;}
""
""
“你好”
""
""
];
[webView loadHTMLString:htmlContentString baseURL:nil];
快速更新:

webView.opaque = true
webView.backgroundColor = UIColor.clearColor()
再说一次,别忘了设置

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

在XCode 6.x中,取消选中不透明,并将背景的不透明度更改为0%。我认为其他XCode版本也可以使用。

适用于Swift 3和XCode 8

self.webView.isOpaque = false;
self.webView.backgroundColor = UIColor.clear
在Swift 4.x中

webView.backgroundColor = .clear
openSourceLicensesWebView.isOpaque = false

别忘了写webView.opaque=NO;我们这里说的“梯度”是什么?是iOS 5。至少在模拟器中。我可以在IB中设置不透明度和背景色。对我来说,样式标签是阻止它工作的原因。如果您仅将这些字符串作为代码编写,则这种方式适用于4.2.1。如果在iterface builder中设置相同的选项,您将无法获得透明的背景,
似乎是可选的,至少在最近的iOS版本中是这样。我不需要设置主体样式。但我必须在代码中设置背景色和不透明。
webView.backgroundColor = .clear
openSourceLicensesWebView.isOpaque = false