web-dev-qa-db-ja.com

透明なUIWebViewを作成する方法

UITableViewと各行の対応する詳細ビューを持つアプリがあります。詳細ビューでは、テキストと背景画像をいくつか表示する必要があります(テキストは行ごとに異なりますが、画像は同じままです)。私の意見では、最も簡単な方法は、テキストを.rtfファイルに入れてUIWebViewに表示することです。次に、UIImageViewの後ろにUIWebViewを置きます。

IBでUIWebViewの不透明度をゼロに設定しようとしましたが、役に立ちませんでした。

手伝って頂けますか?

116
Knodel

私はお勧め:

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

(Interface Builderでこれらのプロパティを設定するとiOS 5.0以降で機能しますが、iOS 4.3ではbackgroundColor コード内を設定する必要があります)

そして、これをHTMLコードに含めます。

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

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];
  }
}
21
Nilesh Kikani

迅速な更新:

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

そして再び、設定することを忘れないでください

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

または、スタイルシートで、インラインスタイルの代わりに:

body {
     background-color: transparent
}
7
kmiklas

For Swift 3 and Xcode 8の場合

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

XCode 6.xでは、不透明のチェックを外し、背景の不透明度に変更します。他のXCodeバージョンも機能すると思います。enter image description here

4
Pyae Thu Aung

「Attributes Inspector」に移動し、Drawing Opaqueのチェックを外すことで、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];
3
Xavier John

スクロールを削除して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
damithH