2015-12-21 1 views
1

Когда я использую NSButton со стилем «Round Rect», наберите «Toggle» и изображение, изображение и заголовок будут красиво отображены синим цветом, когда State установлен на На.NSButton теряет синий эффект подсветки при установке альтернативного изображения

Однако, когда я также добавляю альтернативное изображение, этот эффект выделения исчез.

Есть ли простой способ исправить это?

Я хочу добиться того же эффекта, что и маленькие значки на панели инструментов над Инспектором в Xcode: синий, если выбран, используя альтернативное изображение (слегка смелее), черное, если оно не выбрано, с использованием изображения по умолчанию.

+0

Пожалуйста, добавьте код, который вы пробовали: http://stackoverflow.com/help/mcve – AGE

+1

Синий эффект выделения может быть достигнут без какого-либо кода, просто используя настройки, упомянутые в моей первой строке. Этот эффект исчезает, как только я устанавливаю альтернативное изображение. – Ely

ответ

0

Это ожидаемое поведение. Система только преобразует ваш шаблон, чтобы применить визуальную подсветку, если вы не предоставляете свою собственную альтернативную (активную/включенную/включенную) версию.

+1

Я случайно нашел документацию от Apple, которая доказывает вышеприведенный ответ, ища другую «проблему», по [link] (https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/), заявив: «Вы можете заметить, что невозможно использовать отдельное произведение искусства в качестве альтернативного элемента на кнопке или сегментированном управлении, а также получать синее свечение. Это может быть несколько ограничивающим, но должно стремиться к тому, чтобы этот эффект использовался только тогда, когда это было необходимо. – Ely

0

В ожидании более элегантное решение, я использую этот обходной путь:

-(IBAction)handleClick:(id)sender 
{ 
    NSButton *button = sender; 
    button.image = [NSImage imageNamed:[button.identifier stringByAppendingString:button.state == NSOnState ? @"On" : @""]]; 
} 

Я переключение в коде между стандартным изображением и альтернативным изображением, используя идентификатор управления в качестве базового имени для изображение. Немного уродливый, но он работает. Изображение на кнопке теперь выделено синим цветом, показывая (немного более смелое) альтернативное изображение, когда находится в состоянии «Вкл.».

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