我的资产中有大量图片。我想要做的是在OSX的状态栏中渲染图像如下:
let icon = NSImage(named: "statusIcon")
icon?.size = NSSize.init(width: 18, height: 18)
icon?.template = true
statusItem.image = icon
statusItem.menu = statusMenu
并在我打开的一个视图中使用它:
self.dayIcon.image = NSImage(named: "statusIcon")
问题是,一旦我设置状态栏图像,视图中的图像也会发生变化,即颜色和大小(更改为18x18)
我尝试过使用
icon?.cacheMode = NSImageCacheMode.Never
但没有效果。
这是怎么回事?我可以不使用相同的图像并在不同的地方以不同的方式呈现它。它们都是不同的NSImage
个实例。
答案 0 :(得分:5)
它们都是不同的
NSImage
实例。
他们不是,而且确实是你的问题。
+ [NSImage imageNamed:]可能会返回图像的现有缓存实例。
如果要更改图像的大小而不影响可能持有引用的任何其他人,请复制它。 NSImage的副本是轻量级的 - 它不会复制保存渲染(位图,PNG情况下)数据的基础图像表示。
答案 1 :(得分:3)
我想你需要先调整图片大小。为此,您可以使用不同的方式。例如,您可以为NSImage类编写扩展。例如Resize NSImage in Swift