透明なUIWebViewを作成する方法


117

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

UIWebViewIBで不透明度をゼロに設定しようとしましたが、効果がありませんでした。

手伝って頂けますか?

回答:


302

私はお勧め:

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

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

これをHTMLコードに含めます。

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

iOS 5で動作します。少なくともシミュレーターでは。
Jason McCreary

1
IBで不透明度と背景色を設定することができました。私にとって、スタイルタグはこれが機能しない原因でした。
devinfoley 2012

これらの文字列をコードとしてのみ記述する場合、この方法は4.2.1で機能します。iterfaceビルダーで同じオプションを設定すると、透明な背景が得られません
Gargo

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

1
えーと、ここで話している「勾配」とは何ですか?
Greg Maletic 2012

7

Swiftアップデート:

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

繰り返しますが、設定することを忘れないでください

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

または、スタイルシートのインラインスタイルではなく、次のようにします。

body {
     background-color: transparent
}

1
ボディスタイルを設定する必要はありませんでした。しかし、コードで背景色と不透明度を設定する必要がありました。
Andrej


4

XCode 6.xで[ 不透明]をオフにし、背景の不透明度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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.