2016-01-14 56 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