在NSSearchField子类的drawRect中设置背景颜色

时间:2012-11-04 16:41:40

标签: objective-c cocoa nsview nstextfield nssearchfield

我有一个NSSearchField的自定义子类,我想设置背景颜色。

@interface CustomNSSearchField : NSSearchField
@end

到目前为止,我已经尝试过:

尝试#1

@implementation CustomNSSearchField

- (void)drawRect:(NSRect)rect
{
    [super drawRect:rect];

    [self setDrawsBackground:YES];
    [self setBackgroundColor:[NSColor redColor]];
}

导致完全没有视觉变化:

attempt 1

然后我按照here的建议进行了尝试:

尝试#2

- (void)drawRect:(NSRect)rect
{
    [super drawRect:rect];

    [[NSColor redColor] setFill];
    NSRectFill(rect);
}

结果如下:

attempt 2

如何设置里面的背景颜色搜索字段文本的边界和背后?

1 个答案:

答案 0 :(得分:1)

你必须重绘整个事物。 没有属性,专门更改NSSearchField的背景颜色。 看看这个例子:

Custom NSSearchField

编辑:

还有什么值得指出的。 您永远不应该覆盖控件drawRect方法。 您应该创建NSSearchFieldCell的子类。