Отказ от NSButton без полей из вибрации NSVisualEffectView

У меня есть NSVisualEffectView с вибрацией, содержащей текстовые поля (NSTextField или NSComboBox) и кнопки без полей. Кнопки расположены над текстовыми полями, и я хочу отключить эффект вибрации на кнопках без полей, поскольку они должны отображаться на белом фоне текстовых полей.

То, что я пытался сделать, согласно рекомендации в справочнике по классу NSVisualEffectView, заключается в том, чтобы обернуть мой NSButton внутри другого NSVisualEffectView с его состоянием, установленным в Inactive. Это заменяет «яркий» фон светло-серым фоном.

Рисунок ниже иллюстрирует это. Первое поле — это моя попытка решения, второе показывает поведение по умолчанию кнопки без полей как дочернего элемента NSVisualEffectView.

введите описание изображения здесь

Я также попытался создать подкласс NSButton и установить цвет фона его ячейки на белый или прозрачный, но я всегда получаю серый фон.

Как я могу изменить светло-серый фон на белый или прозрачный фон? Спасибо


person beeb    schedule 01.11.2015    source источник


Ответы (1)


Мне удалось решить это самостоятельно после нескольких часов головной боли. Решение не требует, чтобы кнопка была обернута в NSVisualEffectView. Было достаточно просто создать подкласс NSButton, переопределить свойство allowsVibrancy и установить для него значение false.

В Свифте:

override var allowsVibrancy: Bool { return false }
person beeb    schedule 02.11.2015