Aam*_*mir 5 cocoa objective-c nsview nspopupbutton nsbutton
我试图解决一个听起来非常简单的问题:改变NSPopupButton的背景颜色.
Interface Builder仅允许将样式更改为预定义样式,并且不允许更改背景颜色.此外,设置一个IBOutlet没有帮助,因为NSPopupButton没有setBackgroundColor方法.
我还尝试了子类化NSPopupButton来覆盖该drawRect方法.这是我尝试过的:
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor redColor] setFill];
NSRectFill(dirtyRect);
}
Run Code Online (Sandbox Code Playgroud)
这会在上面绘制一个红色矩形,NSPopupButton而不是将其设置为背景颜色.
关于如何解决这个问题的任何想法?
小智 9
您应该创建NSPopUpButtonCell的子类,然后重写
- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView
Run Code Online (Sandbox Code Playgroud)
NSPopupButtonCell是NSButtonCell的子类,它定义了几种绘制单个单元组件的方法,例如边框,标题,图像.
然后,您可以展开NSPopupButton并将其单元子类更改为新的子类,它应该使用您的绘图方法.
与iOS不同,Cocoa主要使用NSCell来处理绘图