2015-11-01 6 views
5

Ich habe eine NSVisualEffectView mit einer Dynamik, die Textfelder (NSTextField oder NSComboBox) und randlose Schaltflächen enthält. Die Schaltflächen befinden sich über den Textfeldern und ich möchte den Vibrations-Effekt auf den randlosen Schaltflächen deaktivieren, da sie auf dem weißen Hintergrund der Textfelder erscheinen sollen.Deaktivierung des randlosen NSButtons aus NSVisualEffectView-Lebendigkeit

Was ich versucht habe, wie in der NSVisualEffectView-Klassenreferenz empfohlen, besteht darin, meinen NSButton in einen anderen NSVisualEffectView zu verpacken, dessen Status auf Inactive gesetzt ist. Dadurch ersetzt es den "lebendigen" Hintergrund durch einen hellgrauen Hintergrund.

Das Bild unten veranschaulicht dies. Das erste Feld ist meine versuchte Lösung, das zweite zeigt das Standardverhalten einer randlosen Schaltfläche als Kind einer NSVisualEffectView.

enter image description here

Ich habe auch versucht die NSButton Subklassen und legen Sie seine Zelle Hintergrundfarbe weiß oder klar aber ich habe immer den grauen Hintergrund bekommen.

Wie kann ich den hellgrauen Hintergrund in einen weißen oder klaren Hintergrund ändern? Danke

Antwort

3

Ich schaffte es, dies selbst nach ein paar Stunden Kopfschmerzen zu lösen. Die Lösung muss die Schaltfläche nicht in einer NSVisualEffectView enthalten. Einfach Unterklasse NSButton und überschreiben die allowsVibrancy Eigenschaft und setzen Sie es auf false war genug.

In Swift:

override var allowsVibrancy: Bool { return false } 
Verwandte Themen