渲染具有不同大小的相同图像

Mad*_*uja 9 cocoa nsimage swift

我的资产中有大量图像.我想要做的是在OSX的状态栏中渲染图像如下:

let icon = NSImage(named: "statusIcon")
icon?.size = NSSize.init(width: 18, height: 18)

icon?.template = true
statusItem.image = icon
statusItem.menu = statusMenu
Run Code Online (Sandbox Code Playgroud)

并在我打开的一个视图中使用它:

self.dayIcon.image = NSImage(named: "statusIcon")
Run Code Online (Sandbox Code Playgroud)

问题是,一旦我设置状态栏图像,视图中的图像也会发生变化,即颜色和大小(更改为18x18)

我试过用

icon?.cacheMode = NSImageCacheMode.Never
Run Code Online (Sandbox Code Playgroud)

但是没有效果.

这是怎么回事?我可以不使用相同的图像并在不同的地方以不同的方式呈现它.它们都是不同的NSImage例子.

Jim*_*eia 5

它们都是不同的NSImage实例.

他们不是,而且确实是你的问题.

+ [NSImage imageNamed:]可能会返回图像的现有缓存实例.

如果要更改图像的大小而不影响可能持有引用的任何其他人,请复制它.NSImage的副本是轻量级的 - 它不会复制保存渲染(位图,在PNG情况下)数据的底层图像表示.