【问题标题】:How to make a transparent UIWebView如何制作透明的 UIWebView
【发布时间】:2011-04-08 11:55:51
【问题描述】:

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

我尝试在 IB 中将UIWebView 的不透明度设置为零,但没有帮助。

你能帮帮我吗?

【问题讨论】:

    标签: ios iphone cocoa-touch uiwebview


    【解决方案1】:

    在 Swift 4.x 中,

    webView.backgroundColor = .clear
    openSourceLicensesWebView.isOpaque = false
    

    【讨论】:

      【解决方案2】:

      适用于 Swift 3 和 Xcode 8

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

      【讨论】:

        【解决方案3】:

        在 XCode 6.x 中取消选中 Opaque 并将 Background's opacity 更改为 0%。我认为其他 XCode 版本也可以。

        【讨论】:

          【解决方案4】:

          快速更新:

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

          还有,别忘了设置

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

          或者更好的是,在您的样式表中代替内联样式:

          body {
               background-color: transparent
          }
          

          【讨论】:

          • 我不需要设置body style。但我必须在代码中设置背景颜色和不透明。
          【解决方案5】:

          我可以通过转到“属性检查器”并取消选中不透明绘图来使我的 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];
          

          【讨论】:

            【解决方案6】:

            我推荐:

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

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

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

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

            【讨论】:

            • 适用于 iOS 5。至少在模拟器中。
            • 我可以在 IB 中设置不透明度和背景颜色。对我来说,样式标签是阻止它工作的原因。
            • 如果您仅将这些字符串编写为代码,这种方式适用于 4.2.1。如果您在 iterface builder 中设置相同的选项,您将不会获得透明背景
            • &lt;body style="background-color: transparent;"&gt; 似乎是可选的,至少在最近的 iOS 版本中是这样。
            【解决方案7】:

            使用下面的递归方法从 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;
            • 呃,我们这里说的是什么“梯度”?
            【解决方案8】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-16
              • 2012-02-01
              相关资源
              最近更新 更多