2017-02-04 2 views
2

Обычный NSButton кажется прозрачным, если он отключен.Избегание создания прозрачного/прозрачного NSButton, когда isEnabled является ложным (отключено)

enter image description here

Изображение показывает кнопку со стилем 'проталкивания'

Однако я хочу, чтобы отключить кнопку без прозрачности.

Я пытался программно установить alphaValue в 1.0, но мне кажется, что NSButtons cell (ControlView), а также все другие подвиды уже на alphaValue 1.0.

Кроме того, ничего нет userInteractionEnabled или adjustsImageWhenDisabled (оба рекомендуется here) Я мог бы использовать как в iOS.

Как отключить NSButton без стандартной прозрачности?

EDIT: Также «текстурированной толчок» кнопка появляется, чтобы быть прозрачным: enter image description here

+0

Нужно ли использовать обычную кнопку? У текстурированной закругленной кнопки эта проблема отсутствует. – rocky

+0

@rocky См. Мой обновленный вопрос: Кажется, кнопка «текстурированного нажатия» имеет немного меньшую прозрачность, но также прозрачна. – ixany

+0

Ах, ты прав. Наверное, я не выглядел достаточно тяжело. Извини за это. – rocky

ответ

0

Если вам не нужен титул, и будет предоставлять свои собственные изображения кнопки, вы можете использовать setImageDimsWhenDisabled для отключить прозрачность в изображении NSButtonCell, когда он отключен. Вот код:

[buttonCell setImageDimsWhenDisabled:NO]; 

NSButtonCell является подтаблицей из NSButton. Но, как я уже сказал, название будет по-прежнему немного «тусклым», а также его фоном. Но поскольку изображение, если на фоне фона, вы не увидите прозрачный фон.

Другой способ (избегать подкласса NSButton) - это иметь собственную переменную отслеживания состояния для кнопки. Когда состояние отключено, отпустите любое событие click. Пример структуры кода выглядит так:

- (IBAction)clickOnButton { 
    static BOOL isEnabled = YES; 
    if (isEnabled) { 
     // Handle click event here... 

    } 
    isEnabled = !isEnabled; 
} 

Это может показать подсветку при нажатии. Вы также можете отключить подсветку. Но это не очень хорошая идея, если у вас много кнопок. Если у вас много кнопок, подкласс NSButton - лучший выбор.

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