투명한 UIWebView를 만드는 방법


117

UITableView각 행에 대해 a 및 해당 세부 정보보기 가있는 앱이 있습니다. 자세히보기에서 일부 텍스트와 배경 이미지를 표시해야합니다 (텍스트는 행마다 다르지만 이미지는 동일하게 유지됨). 내 생각에 가장 쉬운 방법은 텍스트를 .rtf 파일에 넣고 UIWebView. 그리고 단지를 넣어 UIImageView뒤에서 UIWebView.

UIWebViewIB에서의 불투명도를 0 으로 설정하려고했지만 도움이되지 않았습니다.

도와주세요?

답변:


302

나는 추천한다 :

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

(인터페이스 빌더에서 이러한 속성을 설정하면 iOS 5.0 이상에서 작동하지만 iOS 4.3의 경우 코드 에서 backgroundColor 설정해야합니다 )

그리고 이것을 HTML 코드에 포함하십시오.

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

iOS 5에서 작동합니다. 적어도 시뮬레이터에서.
Jason McCreary 2012

1
IB에서 불투명도와 backgroundColor를 설정할 수있었습니다. 나에게 스타일 태그는 이것이 작동하지 못하게하는 것이었다.
devinfoley 2012-08-27

이 방법은 이러한 문자열을 코드로만 작성하는 경우 4.2.1에서 작동합니다. iterface Builder에서 동일한 옵션을 설정하면 투명한 배경을 얻지 못할 것입니다
Gargo

2
<body style="background-color: transparent;">적어도 최근 아이폰 OS 버전에서는 옵션이 될 것으로 보인다.
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

7

신속한 업데이트 :

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

그리고 다시 설정하는 것을 잊지 마십시오

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

또는 스타일 시트에서 인라인 스타일 대신 더 나은 방법 :

body {
     background-color: transparent
}

1
나는 몸매 스타일을 설정할 필요가 없었다. 하지만 코드에서 배경색과 불투명도를 설정해야했습니다.
안드레이

5

Swift 3 및 Xcode 8의 경우

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

4

XCode 6.x에서는 불투명을 선택 취소 하고 배경의 불투명도0 %로 변경 합니다. 다른 XCode 버전도 작동 할 것이라고 생각합니다.여기에 이미지 설명 입력


3

'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];

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.