2014-11-30 9 views
7

Ich baue eine Mac-Anwendung mit Swift. Daher möchte ich ein WKWebView transparent machen, so dass es den Text des geladenen HTML anzeigt, aber der Hintergrund meines darunterliegenden NSWindows ist sichtbar. Ich versuchteTransparenter Hintergrund WKWebView (NSView)

webView.layer?.backgroundColor = NSColor.clearColor().CGColor; 

, die keine Wirkung hatte. WKWebView erbt von NSView, aber ich weiß nicht, ob das hilft.

Eine andere Lösung wäre, eine NSVisualEffectView als Hintergrund des WebView einzufügen, aber ich weiß auch nicht, wie ich das erreichen soll!

Antwort

3

Code unten funktioniert perfekt für mich, auch die Farbe ist auf ClearColor standardmäßig eingestellt.

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

SetValue: YES ist mit ARC nicht erlaubt. [NSNummer numberWithBool: YES] sollte verwendet werden. Und auch hier gibt es keinen Schlüsselwert, der mit der Codierung kompatibel ist: drawTransparentBackground für WKWebView –

+1

Damit funktioniert _does_ bei richtigem Aufruf: '[wkWebView setValue: @ (YES) forKey: @" drawTransparentBackground "];' (beachte '@ (YES)') Innas "[NSNumber numberWithBool: YES]" ist äquivalent). Die Sicht ist für diesen Schlüssel mindestens 10.11 KVC-kompatibel; Es löst die interne Methode '_setDrawsTransparentBackground:' aus. – DarkDust

+0

Außerdem muss mindestens die übergeordnete Ansicht von 'WKWebView' Layer-Backed oder Layer-gehostet sein. In einer nicht geschichteten Umgebung treten merkwürdige Ergebnisse auf (das Fenster ist vollständig transparent, wenn die Webansicht transparent ist; die Ansichten unterhalb der Webansicht werden nicht angezeigt). – DarkDust

1

Verwendung dieser in macOS 10.12 und höher:

webView.setValue(false, forKey: "drawsBackground")