2012-11-04 20 views
5

Próbuję rozwiązać problem, który wydaje się dość prosty: zmiana koloru tła przycisku NSPopupButton.Jak zmienić kolor tła przycisku NSPopupButton?

Program Interface Builder pozwala tylko na zmianę stylu na wcześniej zdefiniowany i nie pozwala na zmianę koloru tła. Ponadto ustawienie IBOutlet nie pomogło, ponieważ NSPopupButton nie ma metody setBackgroundColor.

Próbowałem również podklasy NSPopupButton zastąpić metodę drawRect. Oto co próbowałem:

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

Ta rysuje czerwony prostokąt nad NSPopupButton raczej niż ustawienie go jako koloru tła.

Wszelkie pomysły, jak rozwiązać ten problem?

Odpowiedz

8

Należy utworzyć podklasę NSPopUpButtonCell, a następnie zastąpić

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

NSPopupButtonCell jest podklasą NSButtonCell który definiuje kilka metod do rysowania poszczególnych składników komórkowych, np oprawy, tytuł, graficznych.

Następnie można rozwinąć przycisk NSPopupButton i zmienić jego podklasę komórki na nową podklasę i użyć metod rysowania.

Kakao wykorzystuje przede wszystkim NSCell do obsługi rysunku, w przeciwieństwie do iOS

-3

Przycisk jest rysowany przez system, więc nie ma realnego sposobu na ustawienie koloru tła w taki sposób, jak system rysuje, jak chcesz. Jedyne, co możesz zrobić, to narysować go w Metoda drawRect, także rysowanie tytułu i rysowanie fragmentu prostokąta.  

Powiązane problemy