2014-11-30 18 views
7

Tôi đang xây dựng một ứng dụng Mac bằng Swift. Do đó, tôi muốn làm cho một WKWebView trong suốt, do đó, nó cho thấy văn bản của HTML được tải, nhưng nền của NSWindow underlaying của tôi là hiển thị. Tôi đã thửNền trong suốt WKWebView (NSView)

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

không có hiệu lực. WKWebView kế thừa từ NSView, nhưng tôi không biết liệu điều này có hữu ích hay không.

Một giải pháp khác là chèn NSVisualEffectView làm nền của WebView, nhưng tôi cũng không biết cách thực hiện điều đó!

Trả lời

3

Mã bên dưới hoạt động hoàn hảo cho tôi, còn màu được đặt thành clearColor theo mặc định.

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

SetValue: YES không được phép với ARC. [NSNumber numberWithBool: YES] nên được sử dụng. Và cũng không có drawScriptsWansparentBackground giá trị khóa cho WKWebView –

+1

Vì vậy, _does_ này hoạt động khi được gọi chính xác: '[wkWebView setValue: @ (YES) forKey: @" drawsTransparentBackground "];' (lưu ý '@ (YES)' ; [Số NSNumber của InnWithBool: YES] của Inna là tương đương). Quan điểm là KVC tuân thủ cho khóa này ít nhất là trên 10,11; nó kích hoạt phương thức nội bộ '_setDrawsTransparentBackground:'. – DarkDust

+0

Ngoài ra, ít nhất chế độ xem cha mẹ của 'WKWebView' phải được hỗ trợ lớp hoặc được lưu trữ lớp. Trong một môi trường không phân lớp, bạn nhận được kết quả lạ (cửa sổ hoàn toàn trong suốt, nơi xem web trong suốt; bạn không thấy các khung nhìn bên dưới chế độ xem web). – DarkDust

1

Sử dụng này trong hệ điều hành MacOS 10.12 và cao hơn:

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