2009-10-28 12 views
8

Come si crea un NSButton personalizzato a tema? Non intendo in un modo piccolo come cambiare il colore di sfondo o cambiare dai bordi arrotondati ai bordi quadrati. Voglio sostituire l'intero aspetto del pulsante. È possibile farlo anche in Cocoa? Ovviamente dovrei sottoclassi la classe NSButton e andare da lì. Qualsiasi aiuto sarebbe molto apprezzato.Come si crea un NSButton a tema personalizzato?

risposta

12

In realtà, è necessario sottoclasse NSButtonCell. Si consiglia di leggere Apple's documentation su questo per ottenere una migliore comprensione di come interagiscono. Probabilmente vorrai comunque creare sottoclasse NSButton in modo che utilizzi anche la sottoclasse NSButtonCell.

Per un pulsante, la maggior parte del lavoro viene eseguita in drawBezelWithFrame:inView:. Se si desidera modificare il modo in cui viene disegnato il testo o l'immagine, si esegue l'override di drawText:withFrame:inView: e drawImage:withFrame:inView:.

+4

Sì, questo è il modo migliore per farlo. Nota: se si utilizza Interface Builder e Mac OS 10.5 non è più necessario eseguire la sottoclasse di NSButton. Basta trascinare/rilasciare il pulsante nel pennino e quindi modificare la classe della cella nella classe personalizzata. – Leibowitzn

+1

Questo è vero. Più ancora, l'unica volta in cui avresti davvero bisogno di sottoclasse di 'NSButton' è se stavi creando i controlli a livello di programmazione. – Alex

+1

Posso semplicemente sostituire l'aspetto impostando una proprietà? Sono stato in grado di modificare l'aspetto utilizzando la proprietà "image" del pulsante, ma ho ottenuto un brutto rettangolo grigio ogni volta che si fa clic sul pulsante personalizzato (l'immagine ha una trasparenza). Grazie. – adib

Problemi correlati