我的 Assets 中有一堆图片。我想做的是在 OSX 的状态栏中渲染图像,如下所示:
let icon = NSImage(named: "statusIcon")
icon?.size = NSSize.init(width: 18, height: 18)
icon?.template = true
statusItem.image = icon
statusItem.menu = statusMenu
并且还在我打开的 View 之一中使用它:
self.dayIcon.image = NSImage(named: "statusIcon")
问题是一旦我设置了状态栏图像, View 中的图像也发生了变化,即颜色和大小都发生了变化(变为 18x18)
我试过用
icon?.cacheMode = NSImageCacheMode.Never
但是没有效果。
这是应该的吗?我不能使用相同的图像并在不同的地方以不同的方式渲染它吗?它们都是不同的 NSImage
实例。
最佳答案
They are both different
NSImage
instance.
它们不是,这确实是您的问题。
+[NSImage imageNamed:] 可能返回图像的现有缓存实例。
如果您想更改图像的大小而不影响可能持有引用的任何其他人,请复制它。 NSImage 的副本是轻量级的 - 它不会复制保存渲染(位图,在 PNG 情况下)数据的底层图像表示。
关于swift - 渲染不同尺寸的相同图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781206/