渲染不同尺寸的相同图像
Rendering the same image with different sizes
我的资产中有一堆图片。我想要做的是在 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
个实例。
我想你需要先调整图片大小。为此,您可以使用不同的方式。例如,您可以为 NSImage class 编写扩展名。例如Resize NSImage in Swift
They are both different NSImage
instance.
它们不是,这确实是您的问题。
+[NSImage imageNamed:] 可能 return 图像的现有缓存实例。
如果您想更改图像的大小而不影响可能持有参考的任何其他人,请复制它。 NSImage 的副本是轻量级的 - 它不会复制保存渲染(位图,在 PNG 情况下)数据的底层图像表示。
我的资产中有一堆图片。我想要做的是在 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
个实例。
我想你需要先调整图片大小。为此,您可以使用不同的方式。例如,您可以为 NSImage class 编写扩展名。例如Resize NSImage in Swift
They are both different
NSImage
instance.
它们不是,这确实是您的问题。
+[NSImage imageNamed:] 可能 return 图像的现有缓存实例。
如果您想更改图像的大小而不影响可能持有参考的任何其他人,请复制它。 NSImage 的副本是轻量级的 - 它不会复制保存渲染(位图,在 PNG 情况下)数据的底层图像表示。