#macos #cocoa #nstoolbar #nstoolbaritem
#macos #cocoa #nstoolbar #nstoolbaritem
Вопрос:
Есть ли способ указать OS X автоматически подкрашивать a NSToolbarItem
?
Я добавил «Элемент панели инструментов изображения» через IB / Xcode и присвоил значку черный цвет в формате PDF, как описано в документации.
Однако мой результат не похож на результат, например, App Store:
Я ищу что-то похожее на то, что панель вкладок в iOS делает по умолчанию.
Я новичок в разработке OS X… Поэтому любые рекомендации будут приняты во внимание!
Ответ №1:
Изображения должны быть сделаны шаблонными, чтобы получить правильный стиль (например, стиль с гравировкой и синим цветом).
Это можно сделать в коде с помощью -[NSImage setTemplate:]
или, если имена ваших изображений заканчиваются на «Template» (не требуя изменений кода).
Чтобы получить конкретный синий стиль, вы должны установить NSButton без полей в качестве пользовательского представления элемента панели инструментов (вместо того, чтобы это был стандартный элемент). Эта кнопка должна иметь тип, который приводит к отображению ее состояния (например, кнопка переключения с круглой текстурой), и когда она находится в состоянии On, она приобретает синий стиль.
Комментарии:
1. Использовал NSButtons так же, как вы предложили — работает как шарм. Спасибо!
2. Потрясающе! Я пытался скопировать Xcode показать / скрыть навигатор проекта / утилиты и т.д., и это сделало свое дело.
3. Выбор «Template» в раскрывающемся списке Render сам по себе ничего не дает; название изображения действительно должно заканчиваться на «Template».
Ответ №2:
Если вы пытаетесь создать тонированный элемент панели инструментов в коде, вот как я это сделал. Создайте правильный тип кнопки NSButtonTypeToggle
затем задайте свойства кнопок, затем добавьте кнопку в пользовательский вид элемента панели инструментов, и, наконец, элемент панели инструментов будет возвращен.
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
// create toolbar items
NSToolbarItem *toolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier];
toolbarItem.label = @"title";
NSImage *iconImage = [NSImage imageNamed:NSImageNameColumnViewTemplate];
NSButton *button = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 40.0, 40.0)];
button.title = @"";
button.image = iconImage;
[button setButtonType:NSButtonTypeToggle];
button.bezelStyle = NSBezelStyleTexturedRounded;
button.action = @selector(toggleColumnView:);
[toolbarItem setView:button];
return toolbarItem;
}