2012-11-04 37 views
5

Tôi đang cố gắng giải quyết một vấn đề có vẻ khá đơn giản: thay đổi màu nền của NSPopupButton.Làm thế nào để thay đổi màu nền của một NSPopupButton?

Trình tạo giao diện chỉ cho phép thay đổi kiểu thành kiểu được xác định trước và không cho phép thay đổi màu nền. Ngoài ra, việc thiết lập một số IBOutlet không được trợ giúp vì NSPopupButton không có phương thức setBackgroundColor.

Tôi cũng đã thử phân lớp NSPopupButton để ghi đè phương thức drawRect. Đây là những gì tôi đã thử:

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

Điều này vẽ một hình chữ nhật màu đỏ trên NSPopupButton thay vì đặt nó làm màu nền.

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?

Trả lời

8

Bạn nên tạo một lớp con của NSPopUpButtonCell, sau đó ghi đè

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

NSPopupButtonCell là một lớp con của NSButtonCell trong đó xác định một số phương pháp để vẽ các thành phần tế bào riêng lẻ, ví dụ như bezel, tiêu đề, hình ảnh.

Sau đó, bạn có thể mở rộng NSPopupButton và thay đổi lớp con của nó thành lớp con mới của bạn và nó nên sử dụng các phương thức vẽ của bạn.

Ca cao chủ yếu sử dụng NSCell để xử lý bản vẽ, không giống như iOS

-3

Nút được vẽ bởi hệ thống, do đó không có cách thực sự để đặt màu nền theo cách hệ thống vẽ nó như bạn muốn. Điều duy nhất bạn có thể làm là vẽ nó trong phương thức drawRect, cũng vẽ tiêu đề và vẽ một phần của hình chữ nhật.  

Các vấn đề liên quan