【问题标题】:UIWebView background is set to Clear Color, but it is not transparentUIWebView背景设置为Clear Color,但不透明
【发布时间】:2012-01-29 19:54:33
【问题描述】:

我正在使用 iOS SDK 最新版本和 XCode 4.2 开发一个 iOS 4 应用程序。

我有一个带有UIWebView 的 XIB,Alpha = 1.0Background 设置为 Clear ColorOpaque strong> 未设置。在这个 XIB 上,我使用以下代码将图像设置为背景:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]];
        self.view.backgroundColor = background;
        [background release];
    }
    return self;
}

UIWebView 显示的是静态 html:

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>

在 iOS 5 模拟器上,它的背景是透明的,但在 iOS 4 设备上是灰色的。

有什么线索吗?

【问题讨论】:

  • 尝试在界面生成器中的 webview 上放置一个 UIImageView 并将其设置为您的图像。
  • 感谢您的回答,但网页视图并没有填满整个屏幕。

标签: iphone objective-c ios cocoa-touch uiwebview


【解决方案1】:

也设置了:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

【讨论】:

  • 这仅适用于我在调用 loadHTMLString 后设置背景颜色和不透明度的情况。似乎 loadHTMLString 重置了这两个值。
  • 我知道问题是针对 iOS 的,但如果针对 OSX,question and answer 可以解决问题,也可以帮助那些使用 iOS 的人。
  • 此解决方案在 iOS 12.1、Xcode 10.1 和 Swift 中仍然有效。
【解决方案2】:
     /*for ios please set this*/

     [webViewFirst setOpaque:NO];

     /*for html please set this*/
     <body style="background:none">

【讨论】:

    【解决方案3】:

    除了将 webview 的背景设置为清除颜色之外,还要确保将 opaque 设置为 false。

    【讨论】:

    • 感谢您的回答,但 Interface Builder 上未设置 opaque。
    • 调用后尝试设置[super viewDidLoad:animated]; .
    • 嗨,我有同样的问题..适用于 ios5 但在 ios4 上是灰色背景。你是怎么解决的?
    【解决方案4】:
    webView.opaque = NO;
    
    webView.backgroundColor = [UIColor clearColor];
    

    【讨论】:

      【解决方案5】:

      你可以试试这段代码(我知道它不安全,但它甚至适用于 ios5):

      - (void)makeBodyBackgroundTransparent {
              for (UIView *subview in [webView subviews]) {
                  [subview setOpaque:NO];
                  [subview setBackgroundColor:[UIColor clearColor]];
              }
              [webView setOpaque:NO];
              [webView setBackgroundColor:[UIColor clearColor]];
      }

      【讨论】:

        【解决方案6】:
        NSString *content=@"example clear background color UIWebview";
        NSString *style=[NSString stringwithformat:@"<html><head><style>body {background-color:transparent;}</style></head><body>%@</body></html>",content];
        [myWebview loadhtmlstring:style baseurl:nil];
        

        【讨论】:

          【解决方案7】:

          为了目标

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

          请确保将其包含在您的 HTML 代码中:

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

           <body style="background:none">
          

          【讨论】:

            【解决方案8】:

            最新的 Swift 版本(根据需要):

            lazy var webView: UIWebView = {
                let view = UIWebView()
                view.delegate = self
                view.backgroundColor = .clear
                view.isOpaque = false
                return view
            }()
            

            如果不需要,请删除委托线

            【讨论】:

              猜你喜欢
              • 2012-07-27
              • 1970-01-01
              • 1970-01-01
              • 2023-03-06
              • 1970-01-01
              • 1970-01-01
              • 2018-12-25
              • 2016-10-09
              • 1970-01-01
              相关资源
              最近更新 更多