【问题标题】:Setting background color in drawRect of NSSearchField subclass在 NSSearchField 子类的 drawRect 中设置背景颜色
【发布时间】:2012-10-24 14:35:00
【问题描述】:

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

@interface CustomNSSearchField : NSSearchField
@end

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

尝试 #1

@implementation CustomNSSearchField

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

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

完全没有视觉上的变化:

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

尝试 #2

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

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

结果如下:

如何在搜索字段的文本设置背景颜色?

【问题讨论】:

    标签: objective-c cocoa nsview nstextfield nssearchfield


    【解决方案1】:

    你必须重绘整个东西。 没有属性可以专门更改 NSSearchField 的背景颜色。 看看这个例子:

    Custom NSSearchField

    编辑:

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

    【讨论】:

    • 谢谢。子类化 NSSearchFieldCell 而不是 NSSearchField 解决了问题。
    • @aam1r,你能发布你的工作代码吗?我正在尝试获得与工作类似的东西,但运气不佳。
    • @Zenox:很抱歉,我无法粘贴代码库的 sn-ps。不过我建议看BWToolkit。它是一个常用 UI 元素的库。它是开源的,我必须浏览代码库才能了解他们是如何进行自定义的,并遵循了类似的想法。
    • @Zenox 你到底有什么问题?我会尽力帮助你的。
    • 我试过了,它对我不起作用。如果有人有工作代码,请发布。
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2014-06-12
    • 2023-03-28
    • 1970-01-01
    • 2011-03-25
    • 2012-10-16
    • 2015-12-26
    相关资源
    最近更新 更多