在 NSSearchField 子类的 drawRect 中设置背景颜色
Posted
技术标签:
【中文标题】在 NSSearchField 子类的 drawRect 中设置背景颜色【英文标题】:Setting background color in drawRect of NSSearchField subclass 【发布时间】: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);
结果如下:
如何在搜索字段的文本内设置背景颜色?
【问题讨论】:
【参考方案1】:你必须重绘整个东西。 没有属性可以专门更改 NSSearchField 的背景颜色。 看看这个例子:
Custom NSSearchField
编辑:
还有什么值得指出的。 您永远不应该覆盖控件的 drawRect 方法。 您应该创建NSSearchFieldCell 的子类。
【讨论】:
谢谢。子类化NSSearchFieldCell
而不是 NSSearchField
解决了问题。
@aam1r,你能发布你的工作代码吗?我正在尝试获得与工作类似的东西,但运气不佳。
@Zenox:很抱歉,我无法粘贴代码库的 sn-ps。不过我建议看BWToolkit。它是一个常用 UI 元素的库。它是开源的,我必须浏览代码库才能了解他们是如何进行自定义的,并遵循了类似的想法。
@Zenox 你到底有什么问题?我会尽力帮助你的。
我试过了,它对我不起作用。如果有人有工作代码,请发布。以上是关于在 NSSearchField 子类的 drawRect 中设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
强制 NSSearchField 在成为第一响应者时开始编辑