2015-11-01 31 views
5

Possiedo un NSVisualEffectView con una vibrazione contenente campi di testo (NSTextField o NSComboBox) e pulsanti senza bordo. I pulsanti sono posizionati sopra i campi di testo e voglio disabilitare l'effetto di vibrazione sui pulsanti senza bordi poiché dovrebbero apparire sullo sfondo bianco dei campi di testo.NSButton senza margini di disattivazione da NSVisualEffectView vibrancy

Quello che ho cercato di fare, come da raccomandazione nel riferimento alla classe NSVisualEffectView, è di avvolgere il mio NSButton all'interno di un altro NSVisualEffectView con il suo stato impostato su Inattivo. Ciò che fa è sostituire lo sfondo "vibrante" con uno sfondo grigio chiaro.

L'immagine seguente illustra questo. Il primo campo è la mia soluzione tentata, il secondo mostra il comportamento predefinito di un pulsante senza bordi come figlio di un NSVisualEffectView.

enter image description here

Ho anche provato il sottoclassi NSButton e impostare il colore di sfondo della cella di bianco o chiaro, ma ottengo sempre lo sfondo grigio.

Come posso cambiare lo sfondo grigio chiaro su uno sfondo bianco o chiaro? Grazie

risposta

3

Sono riuscito a risolverlo da solo dopo alcune ore di mal di testa. La soluzione non ha bisogno del pulsante per essere racchiuso in un NSVisualEffectView. È sufficiente la sottoclasse di NSButton e l'override della proprietà allowsVibrancy e l'impostazione su false.

In Swift:

override var allowsVibrancy: Bool { return false }