2014-11-30 28 views
7

Sto creando un'applicazione Mac utilizzando Swift. Pertanto, voglio rendere trasparente una WKWebView, in modo che mostri il testo dell'HTML caricato, ma lo sfondo della mia sottostruttura NSWindow è visibile. Ho provatoSfondo trasparente WKWebView (NSView)

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

che non ha avuto alcun effetto. WKWebView eredita da NSView, ma non so se questo aiuta.

Un'altra soluzione sarebbe inserire NSVisualEffectView come sfondo di WebView, ma non so come riuscirci!

risposta

3

Il codice seguente funziona perfettamente per me, anche il colore è impostato su clearColor per impostazione predefinita.

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

SetValue: YES non è consentito con ARC. [NSNumber numberWithBool: YES] dovrebbe essere usato. Inoltre, non vi è alcun valore chiave per il drawing conforme alla codificaTransparentBackground per WKWebView –

+1

Quindi questo _viene funzionare quando chiamato correttamente: '[wkWebView setValue: @ (YES) forKey: @" drawsTransparentBackground "];' (notare il '@ (YES)' ; Inna's '[NSNumber numberWithBool: YES]' è equivalente). La vista è compatibile con KVC per questa chiave almeno il 10.11; attiva il metodo interno '_setDrawsTransparentBackground:'. – DarkDust

+0

Inoltre, almeno la vista principale di 'WKWebView' deve essere supportata dal layer o ospitata nel layer. In un ambiente non stratificato si ottengono risultati strani (la finestra è completamente trasparente dove la vista Web è trasparente, non si vedono le viste sotto la vista Web). – DarkDust

1

Usare questo in MacOS 10.12 e superiore:

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