2012-11-04 16 views
5

Sto cercando di risolvere un problema che sembra piuttosto semplice: cambiare il colore di sfondo di un NSPopupButton.Come cambiare il colore di sfondo di un NSPopupButton?

Interface Builder consente solo di cambiare lo stile in uno predefinito e non consente di modificare il colore di sfondo. Inoltre, l'installazione di IBOutlet non ha aiutato poiché NSPopupButton non ha un metodo setBackgroundColor.

Ho anche provato la sottoclasse NSPopupButton per sovrascrivere il metodo drawRect. Ecco quello che ho provato:

- (void)drawRect:(NSRect)dirtyRect 
{ 
    [[NSColor redColor] setFill]; 
    NSRectFill(dirtyRect); 
} 

Questo disegna un rettangolo rosso sopra la NSPopupButton piuttosto che impostare come un colore di sfondo.

Qualche idea su come risolvere il problema?

risposta

8

È necessario creare una sottoclasse di NSPopUpButtonCell, quindi sovrascrivere

- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView 

NSPopupButtonCell è una sottoclasse di NSButtonCell che definisce vari metodi per disegnare componenti cellulari individuali, ad esempio lunetta, titolo, immagine.

È quindi possibile espandere NSPopupButton e modificare la relativa sottoclasse di celle nella nuova sottoclasse e utilizzare i metodi di disegno.

Il cacao utilizza principalmente NSCell per gestire il disegno, a differenza di iOS

-3

Il pulsante è disegnato dal sistema, quindi non esiste un modo reale per impostare il colore di sfondo in modo che il sistema lo disegni come si desidera. L'unica cosa che si può fare è disegnarla nel drawRect, anche disegnando il titolo e disegnando una porzione del rettangolo.  

Problemi correlati