dan*_*ele 10 macos appkit swift
我正在使用Swift构建Mac应用程序.因此,我想让WKWebView透明,因此它显示了加载的HTML的文本,但我的底层NSWindow的背景是可见的.我试过了
webView.layer?.backgroundColor = NSColor.clearColor().CGColor;
Run Code Online (Sandbox Code Playgroud)
没有任何影响.WKWebView继承自NSView,但我不知道这是否有帮助.
另一个解决方案是插入一个NSVisualEffectView作为WebView的背景,但我不知道如何实现它!
它不受支持,然后他们修复它:
https://bugs.webkit.org/show_bug.cgi?id=134779
使其透明的方法是:
myWebView.opaque = false
Run Code Online (Sandbox Code Playgroud)
下面的代码对我来说非常合适,默认情况下颜色也设置为clearColor.
[wkWebView setValue:YES forKey:@"drawsTransparentBackground"];
Run Code Online (Sandbox Code Playgroud)
在macOS 10.12及更高版本中使用此命令:
webView.setValue(false, forKey: "drawsBackground")
Run Code Online (Sandbox Code Playgroud)
我在 macOS 10.12 上使用了这个。OjbC 中没有问题:
[self.webView setValue:@YES forKey:@"drawsTransparentBackground"];
Run Code Online (Sandbox Code Playgroud)
在 macOS 10.13.+ 下,我收到以下控制台警告消息:
-[WKWebView _setDrawsTransparentBackground:] 已弃用,不应使用
唯一有效的解决方案是:
[self.webView setValue:@(NO) forKey:@"drawsBackground"];
Run Code Online (Sandbox Code Playgroud)
我在很多情况下尝试了以下方法,但没有成功:
另外我确实使用了:
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation
{
if (self.isWebviewsBackgroundTransparent) {
[self insertTransparentBackgroundTo:webView];
}
}
- (void)insertTransparentBackgroundTo:(WKWebView *)webView
{
NSString *transparentBackgroundJSSString = @"document.body.style = document.body.style.cssText + \";background: transparent !important;\";";
[webView evaluateJavaScript:transparentBackgroundJSSString completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)