2016-01-14 3 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") 

Проблема заключается в том, как только Я поставил в строке состояния изображения, то в представлении также изменяется, то есть как цвет и размер (изменения в 18x18)

Я попытался с помощью

icon?.cacheMode = NSImageCacheMode.Never 

но нет эффекта.

Это как это должно быть? Могу ли я не использовать один и тот же образ и сделать его по-разному в разных местах. Они оба разные NSImage экземпляров.

+0

Попробуйте установить свойство шаблона NSImage на false –

+0

шаблон необходим для установки значка состояния –

+0

Я думаю, вы правы, думая, что вы получаете кешированную версию. Однако свойство cacheMode используется только для фактического рисования. Вы пытались сделать явную копию изображения? 'icon = icon.copy()' –

ответ

5

Они оба разные NSImage экземпляр.

Это не так, и это действительно ваша проблема.

+ [NSImage imageNamed:] может возвращать существующий кешированный экземпляр изображения.

Если вы хотите изменить размер изображения, не затрагивая никого, кто может содержать ссылку, сделайте копию. Копия NSImage является легкой - она ​​не дублирует основные изображения, которые содержат данные рендеринга (битмап, в случае PNG).

3

Я предполагаю, что вам нужно сначала изменить размер изображения. Для этого вы можете использовать разные способы. Например, вы можете написать расширение для класса NSImage. Например, Resize NSImage in Swift

+0

Также я предлагаю вам прочитать хорошую статью о размерах значков строки состояния: https://alastairs-place.net/blog/2013/07/23/nsstatusitem-what- размер должен-ваш-значок-быть / – toohtik

Смежные вопросы