2014-07-10 80 views
22

내 앱에서 투명한 배경으로 WKWebView를 만들고 싶기 때문에 (ImageView) 뒤의보기가 배경 그림으로 표시 될 수 있습니다.WKWebView의 투명 배경

webView!.opaque = false 
    webView!.backgroundColor = UIColor.clearColor() 

위의 코드는 UIWebView에서 제대로 작동하지만 webView가 WKWebView 인 경우 흰색 배경이 표시됩니다.

또한 CSS에 투명한 배경색을 넣으려고했습니다. 결과는 동일하지만 UIWebView에서만 작동하지만 WKWebView에서는 작동하지 않습니다. 어떠한 제안?

답변

0

아직 WKWebView와 함께 일하지만, 심지어 UIWebView에서이 문제를 가지고하는 데 사용 및 솔루션은 다음과 같이 내부의 HTML 콘텐츠를 포장했다하지 않았 :

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

는 도움이되기를 바랍니다.

+0

감사 : 여기

내가 스위프트 사에 검은 배경으로 PDF 미리보기 컨트롤러를 구현하는 방법입니다 투명; CSS 파일에서도 작동하지 않습니다. 배경은 항상 흰색입니다. –

5

이 버그는 아래 5

2

코드는 나를 위해 작동 베타에서 수정 될 것 같다

[wkWebView setValue:YES forKey:@"drawsTransparentBackground"]; 
+0

SetValue : ARC에서는 YES가 허용되지 않습니다. [NSNumber numberWithBool : YES]를 사용해야합니다. 또한 WKWebView –

+0

@ InnaKamoze 덕분에 키 값 코딩을 준수하는 drawTransparentBackground가 없습니다. 다른 해결책을 제공해 주시겠습니까? – kisileno

+0

이 방법이 작동하지 않으면 WKWebView 속성이 손상되거나 다른 문제가 있습니다. 어쨌든 drawsTransparentBackground 및 setValue ForKey와 같은 메소드가 없습니다. ARC에서는 지원되지 않습니다. –

4

이 코드는 당신을 도울 수 있습니다. Swift 3 이상에 업데이트 됨

self.webView = WKWebView() 
self.webView.isOpaque = false 
self.webView.backgroundColor = UIColor.clear 
self.webView.scrollView.backgroundColor = UIColor.clear 
+0

나를 위해 작동하지 않았다 –

0

이 질문은 아주 오래된 질문입니다. 그러나 나는 오늘 이것을 고심하고있다. 나 혼자인지 모르겠지만 webView.backgroundColor는 WKWebView에서 정의되지 않았고 webView.opaque는 읽기 전용이었습니다. 내가이 문제를 해결하기위한 유일한 방법은 분명히 CGColor

webview.wantsLayer = true 
webView.layer?.backgroundColor = NSColor.clearColor().CGColor 

과 포함 NSView의에 나를 위해 일한 유일한있어 같은 방법으로

webViewParent.layer?.backgroundColor = NSColor.clearColor().CGColor 

를 웹 뷰 레이어의 배경색을 설정하는 것이 었습니다 나는 다른 사람을 도울 수 있기를 바랍니다. 스위프트를 사용

iOS 용
+0

질문은 iOS에 관한 것이지 OSX가 아닙니다 –

16

10 + : 당신이 PDF를로드 표준 회색 다른 배경 색상을 원하는 경우

self.webView = WKWebView() 
self.webView!.isOpaque = false 
self.webView!.backgroundColor = UIColor.clear 
self.webView!.scrollView.backgroundColor = UIColor.clear 
+0

WKWebView.scrollView.backgroundColor는 기본적으로 이미 색상을 지 웁니다. – CodePlumber

0

, 문서가로드 될 때까지 기다릴 필요가 보인다, 다음 subviews의 배경을 취소하십시오. PDFView (iOS 11 이상)보다 WKWebView을 사용하면 두 배 탭으로 확대/축소하고 페이지 수 표시기를 내장하고 이전 버전의 iOS와 호환된다는 장점이 있습니다.

언제든지 솔루션을 깨뜨릴 수 있으므로 언제든지 구현을 변경할 수 있으므로 시스템보기를 살펴 보는 것은 좋지 않습니다. 그것을 시도하고, 또한 색상 퍼팅

class SomeViewController: UIViewController { 

    var observer: NSKeyValueObservation? 
    var url: URL 

    init(url: URL) { 
     self.url = url 
     super.init(nibName: nil, bundle: nil) 
    } 

    func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.backgroundColor = UIColor.black 
     let webView = WKWebView() 
     webView.translatesAutoResizingMaskIntoConstraints = false 
     self.view.addSubview(webView) 
     NSLayoutConstraint.activate([ 
      webView.topAnchor.constraint(equalTo: self.view.topAnchor), 
      webView.leftAnchor.constraint(equalTo: self.view.leftAnchor), 
      webView.rightAnchor.constraint(equalTo: self.view.rightAnchor), 
      webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor) 
     ]) 

     self.observer = webView.observe(\.isLoading, changeHandler: { (webView, change) in 
      webView.clearBackgrounds() 
     }) 

     webView.loadFileURL(self.url, allowingReadAccessTo: self.url) 

    } 
} 

extension UIView { 
    func clearBackgrounds() { 
     self.backgroundColor = UIColor.clear 
     for subview in self.subviews { 
      subview.clearBackgrounds() 
     } 
    } 
}