Attualmente sto lavorando a un tema personalizzato NSButton
. Ogni tutorial o guida che ho trovato richiede sottoclasse NSButtonCell
, anche the guide from Apple.Come creare un NSButton personalizzato a tema senza sottoclasse NSButtonCell?
Tutti questi sembrano essere obsoleti, perché tutti i metodi di cella in NSControl
sono deprecated in Yosemite. Non ho trovato alcun consiglio o guida su cosa usare come sostituto.
Questa è l'unica affermazione, sono riuscito a trovare:
deprecazione graduale NSCell
Mac OS X 10.10 compie un ulteriore passo verso l'eventuale disapprovazione di cellule. L'accesso diretto alla cella di un controllo è sconsigliato e i metodi che lo consentono verranno ufficialmente ritirati in una successiva versione . Una varietà di API a livello di cella sono state promosse in varie sottoclassi di controllo per fornire un accesso senza cella alle importanti funzionalità di . NSLevelIndicator, NSTextField, NSSearchField, NSSlider, e NSPathControl hanno tutti nuove proprietà per questo scopo. basati su celle sono ora deprecati e NSTableViews basati sulla visualizzazione dovrebbero essere usati come . Anche gli NSBrowser basati su matrici sono deprecati a favore di l'interfaccia basata su elementi.
Estratto da: AppKit Release Notes for OS X v10.10
Non ci sono parole in NSButton
però.
NSTextField
supporta viste con layer supportati; a causa di ciò, ho provato lo stesso approccio sul mio NSButton
, ma questo non ha alcun effetto.
var btn = NSButton(NSMakeRect(0, 0, 50, 20))
btn.wantsLayer = true
btn.bordered = false
btn.layer?.backgroundColor = NSColor(calibratedWhite: 0.99, alpha: 1).CGColor
btn.layer?.borderWidth = 1
btn.layer?.borderColor = NSColor(calibratedWhite: 0.81, alpha: 1).CGColor
Come una piccola nota a margine, un trucco se lo si desidera, ho creato visualizzazioni personalizzate, quindi facendo un pulsante invisibile su di esso. Salva un sacco di mal di testa. –
Si può semplicemente dare il tema come immagine di sfondo del pulsante. –
@MattyAyOh sembra facile, ma più simile a un hack.Non penso che questo sia il modo previsto per farlo e mi piacerebbe sapere il modo previsto. Ma grazie per aver condiviso questo trucco. – Afterlame