2012-11-04 4 views
5

나는 NSPopupButton의 배경색을 바꾸는 아주 간단한 문제를 해결하려고 노력 중이다.NSPopupButton의 배경색을 변경하는 방법은 무엇입니까?

인터페이스 빌더는 스타일을 사전 정의 된 스타일로만 변경할 수 있으며 배경색을 변경할 수 없습니다. 또한 NSPopupButton에는 setBackgroundColor 메소드가 없기 때문에 IBOutlet을 설정하는 것이 도움이되지 않았습니다.

또한 NSPopupButton의 하위 클래스 화를 시도하여 drawRect 메서드를 재정의했습니다. 여기에 내가 시도 내용은 다음과 같습니다

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

이 오히려 배경색으로 설정보다 NSPopupButton 위에 빨간색 사각형을 그립니다.

해결 방법에 대한 아이디어가 있으십니까?

답변

8

그런 다음

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

NSPopupButtonCell 개별 세포 구성 요소, 예를 들어 베젤, 제목, 이미지를 그리기 위해 여러 가지 방법을 정의 NSButtonCell의 서브 클래스가 오버라이드 (override), NSPopUpButtonCell의 서브 클래스를 작성해야합니다.

그런 다음 NSPopupButton을 확장하고 셀 하위 클래스를 새 하위 클래스로 변경할 수 있습니다. 그러면 드로잉 메서드를 사용해야합니다.

코코아는 iOS와 달리 주로 NSCell을 사용하여 그림을 처리합니다.

-3

버튼은 시스템에 의해 그려지기 때문에 시스템이 원하는대로 배경색을 설정하는 실제 방법은 없습니다. 할 수있는 유일한 작업은 drawRect 메서드를 사용하여 제목을 그리고 직사각형의 일부분을 그립니다.  

관련 문제