Настройка изображений шаблонов при использовании каталога активов в OS X

У меня есть каталог ресурсов, в котором хранятся все изображения, которые я использую в кнопках панели инструментов, и я хочу, чтобы все они были шаблонными изображениями. Насколько я знаю, нет способа установить изображение кнопки в качестве изображения шаблона в IB, но если я создам изображение следующим образом

NSImage *buttonImage = [NSImage imageNamed:@"imageName"];
[buttonImage setTemplate:YES];

затем изображение для «imageName» становится шаблонным изображением во всем приложении. Если не считать повторения каждого элемента в каталоге активов, есть ли способ сделать это?

Я попытался установить имя актива в каталоге на *Template, но это не работает. Я также пытался переименовать фоновые изображения, включив в них «Шаблон», но это тоже не сработало. Какие-либо предложения?


person diego    schedule 26.02.2014    source источник
comment
Вы когда-нибудь получали ответ на это?   -  person jsd    schedule 12.06.2014
comment
Я только что поместил все изображения, которые должны быть изображениями шаблона, в один каталог ресурсов, затем перебрал их и установил setTemplate.   -  person diego    schedule 18.06.2014


Ответы (1)


Вы должны сделать это в файле xcassets. На панели утилит -> инспектор атрибутов есть настройка. Он называется «Визуализировать как» и содержит параметр «Шаблон изображения». К сожалению, похоже, есть ошибка, которая не позволяет этому на самом деле работать, или настройка вводит в заблуждение.

Однако на самом деле вы можете сделать это в IB.

  1. Выберите свой NSButton или NSToolbarItem
  2. Показать панель утилит
  3. Переключитесь в Инспектор удостоверений (CMD+SHIFT+3)
  4. Перейдите в раздел Пользовательские атрибуты среды выполнения.
  5. Добавьте логический атрибут с именем image.template и оставьте для него значение true.

Если у вас есть набор alterImage для вашего NSButton, вы, вероятно, захотите сделать то же самое для этого свойства. Итак, добавьте в список еще один атрибут с именем alternateImage.template

person George    schedule 28.09.2014