如何在 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
}
}
我在 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
}
}