如何在 cocoa NSView 中设置背景图片

How to set a background image in cocoa NSView

我在 iOS 中找到了关于如何将背景图像设置为 UIView 的问题的几个答案。 但是我无法为 macOS 解决这个问题,尤其是 cocoa。 我试过设置类似

的东西
let bgImage = NSImage(named: "streaks")
let pattern = NSColor(patternImage: bgImage!)
self.view.layer?.background = pattern as! CGColor // this will fail on runtime

UIView不同,NSView默认不支持图层,您必须启用它。

self.view.wantsLayer = true

然后创建图像并将其分配给图层的contents 属性。

let image = NSImage(named: "streaks")
self.view.layer!.contents = image

在Swift 4

    self.view.wantsLayer = true
    let image = NSImage(named: NSImage.Name(rawValue: "streaks"))
    self.view.layer!.contents = image
class CustomImageView: NSView { 

    open override func makeBackingLayer() -> CALayer {
        let backingLayer = super.makeBackingLayer()
        let image = NSImage(named: NSImage.Name(rawValue: "imageName"))
        backingLayer.contents = image
        return backingLayer
    }
}