如何使用CAPluginLayer和CABackdropLayer?

问题描述 投票:0回答:0

我在互联网上寻找有关 CAPluginLayer 和 CABackdropLayer 的信息,我发现了这个链接这里有一些这样的代码:

let layer = CAPluginLayer()
layer.frame = CGRect(x: 50, y: 50, width: 200, height: 200)
layer.pluginType = "com.apple.WindowServer.CGSWindow"
layer.pluginId = UInt64(self.window.windowNumber)
layer.pluginGravity = kCAGravityResizeAspect
//layer.pluginFlags = 0x4 // display without a shadow

或者像这样:

let layer = CABackdropLayer()
layer.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
layer.allowsHitTesting = true
layer.groupName = "group_name_here"
layer.windowServerAware = true
let blur = CAFilter(type: kCAFilterGaussianBlur)!
blur.setValue(true, forKey: "inputNormalizeEdges")
blur.setValue(30.0, forKey: "inputRadius")
let saturate = CAFilter(type: kCAFilterColorSaturate)!
saturate.setValue(1.8, forKey: "inputAmount")
layer.filters = [blur, saturate]
layer.name = "backdrop"
layer.scale = 0.25
layer.bleedAmount = 0.2

我尝试运行代码,但我想我需要导入一些东西让代码工作我如何导入 CAPluginLayer 和 CABackdropLayer 以及我应该如何正确运行这 2 个代码块?

错误:

在范围内找不到“CABackdropLayer”

在范围内找不到“CAFilter”

这里是我的代码:

    import Cocoa

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        
        let layer = CABackdropLayer()
        layer.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
        layer.allowsHitTesting = true
        layer.groupName = "group_name_here"
        layer.windowServerAware = true
        let blur = CAFilter(type: kCAFilterGaussianBlur)!
        blur.setValue(true, forKey: "inputNormalizeEdges")
        blur.setValue(30.0, forKey: "inputRadius")
        let saturate = CAFilter(type: kCAFilterColorSaturate)!
        saturate.setValue(1.8, forKey: "inputAmount")
        layer.filters = [blur, saturate]
        layer.name = "backdrop"
        layer.scale = 0.25
        layer.bleedAmount = 0.2

    }

}
swift cocoa core-animation
© www.soinside.com 2019 - 2024. All rights reserved.