2016-01-14 59 views
9

我在我的资产中有一堆图像。我所试图做的是呈现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") 

的问题,只要是我设置状态栏图像,在视图中的图像也发生变化,即两个颜色和的大小(变化到18×18)

我已经使用

icon?.cacheMode = NSImageCacheMode.Never 
012试图

但没有效果。

这是它是如何应该是什么?我可以不使用相同的图像,并在不同的地方以不同的方式渲染它。它们都是不同的NSImage实例。

+0

尝试将NSImage模板属性设置为false –

+0

需要模板来设置状态图标 –

+0

我认为您正确地认为自己正在获取缓存版本。但是,'cacheMode'属性只能用于实际绘图。你有没有尝试制作一个明确的图像副本? 'icon = icon.copy()' –

回答

5

它们都是不同的NSImage实例。

他们都没有了,那确实是你的问题。

+ [NSImage中imageNamed:]可以返回到图像显示的现有缓存实例。

如果你想改变图像的大小,而不会影响其他人谁可能持有的引用,使得它的一个副本。 NSImage的副本是轻量级的 - 它不会复制保存渲染(位图,在PNG情况下)数据的底层图像表示。

3

我想你首先需要调整图像。为此,你可以使用不同的方式。例如,你可以为NSImage类写扩展名。例如Resize NSImage in Swift

+0

此外,我sugest你了解状态栏图标大小调整好文章:https://alastairs-place.net/blog/2013/07/23/nsstatusitem-what-大小应该-你的图标,是/ – toohtik