Transparent background WKWebView (NSView)

后端 未结 5 1621
野性不改
野性不改 2021-02-08 12:27

I am building a Mac application using Swift. Therefor, I want to make a WKWebView transparent, so it shows the text of the loaded HTML, but the background of my underlaying NSWi

5条回答
  •  遥遥无期
    2021-02-08 12:47

    Updated, slightly better solution (2021). Use private property drawsBackground on WKWebViewConfiguration. It's property has been introduced in macOS 10.14 so it won't go away.

    //https://opensource.apple.com/source/WebKit2/WebKit2-7610.2.11.51.8/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h.auto.html
    @property (nonatomic, setter=_setDrawsBackground:) BOOL _drawsBackground WK_API_AVAILABLE(macos(10.14), ios(12.0));
    
    let configuration = WKWebViewConfiguration()
    var requiresDrawBackgroundFallback = false
    if #available(OSX 10.14, *) {                         
        configuration.setValue(false, forKey: "sward".reversed() + "background".capitalized) //drawsBackground KVC hack; works but private
    } else {
        requiresDrawBackgroundFallback = true
    }
    let webView = WKWebView(frame: .zero, configuration: configuration)
    if requiresDrawBackgroundFallback {
        webView.setValue(false, forKey: "sward".reversed() + "background".capitalized) //drawsBackground KVC hack; works but private
    }
    

提交回复
热议问题