2014-11-30 27 views
7

Buduję aplikację na Maca używając Swift. Dlatego chcę, aby WKWebView był przezroczysty, więc pokazuje tekst załadowanego HTML, ale widoczne jest tło mojego podkładania NSWindow. Próbowałem:Przezroczyste tło WKWebView (NSView)

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

który nie przyniósł żadnego efektu. WKWebView dziedziczy po NSView, ale nie wiem, czy to pomaga.

Innym rozwiązaniem byłoby wstawienie NSVisualEffectView jako tła WebView, ale nie wiem, jak to osiągnąć!

Odpowiedz

3

Poniższy kod działa idealnie, również domyślnie ustawiony jest kolor clearColor.

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

Wartość zestawu: TAK jest niedozwolony w przypadku ARC. [Numer NSNumberWithBool: YES] powinien być użyty. A także nie ma żadnych zgodnych z kodem wartości drawsTransparentBackground dla WKWebView –

+1

Tak więc to _ działa, gdy jest wywoływane poprawnie: '[wkWebView setValue: @ (YES) forKey: @" drawsTransparentBackground "];' (zauważ "@ (TAK)" ; Inna '[NSNumber numberWithBool: YES]' jest równoważna). Widok jest zgodny z KVC dla tego klucza co najmniej 10.11; uruchamia wewnętrzną metodę '_setDrawsTransparentBackground:'. – DarkDust

+0

Co najmniej widok nadrzędny 'WKWebView' musi być warstwowy lub hostowany w warstwach. W środowisku bez warstw otrzymujesz dziwne wyniki (okno jest całkowicie przezroczyste, gdy widok WWW jest przezroczysty, nie widać widoków pod widokiem WWW). – DarkDust

1

użyć tego w MacOS 10.12 i wyższym:

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