UITableView
と各行の対応する詳細ビューを持つアプリがあります。詳細ビューでは、テキストと背景画像をいくつか表示する必要があります(テキストは行ごとに異なりますが、画像は同じままです)。私の意見では、最も簡単な方法は、テキストを.rtfファイルに入れてUIWebView
に表示することです。次に、UIImageView
の後ろにUIWebView
を置きます。
IBでUIWebView
の不透明度をゼロに設定しようとしましたが、役に立ちませんでした。
手伝って頂けますか?
私はお勧め:
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
(Interface Builderでこれらのプロパティを設定するとiOS 5.0以降で機能しますが、iOS 4.3ではbackgroundColor コード内を設定する必要があります)
そして、これを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];
}
}
迅速な更新:
webView.opaque = true
webView.backgroundColor = UIColor.clearColor()
そして再び、設定することを忘れないでください
<body style="background-color: transparent">
または、スタイルシートで、インラインスタイルの代わりに:
body {
background-color: transparent
}
For Swift 3 and Xcode 8の場合
self.webView.isOpaque = false;
self.webView.backgroundColor = UIColor.clear
XCode 6.xでは、不透明のチェックを外し、背景の不透明度を%に変更します。他のXCodeバージョンも機能すると思います。
「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];
スクロールを削除して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];
}
}
}
}