Macos 如何更改NSSearchField的背景色(如OS X中的Messages应用程序)

Macos 如何更改NSSearchField的背景色(如OS X中的Messages应用程序),macos,cocoa,nssearchfield,Macos,Cocoa,Nssearchfield,我需要得到这个NSSearchField的外观 但是,用接口生成器的标准方法设置背景色似乎是不可能的。我怎样才能做到这一点? 子类化NSSearchField和NSSearchFieldCell没有帮助,因为在实现自己的绘图方法时,我松开了所有动画(当您单击搜索字段和向左滑动的图标+文本时)。您的屏幕截图显示的只是NSSearchField在NSVisualEffectView下的标准外观。也就是说,当搜索字段是NSVisualEffectView的子视图时(使用NSVisualEffectM

我需要得到这个NSSearchField的外观

但是,用接口生成器的标准方法设置背景色似乎是不可能的。我怎样才能做到这一点?
子类化NSSearchField和NSSearchFieldCell没有帮助,因为在实现自己的绘图方法时,我松开了所有动画(当您单击搜索字段和向左滑动的图标+文本时)。

您的屏幕截图显示的只是
NSSearchField
NSVisualEffectView
下的标准外观。也就是说,当搜索字段是
NSVisualEffectView
的子视图时(使用
NSVisualEffectMaterialLight
material
),它将自动获得上面的视图

但是,如果希望此外观不包含
NSVisualEffectView
,则可以手动设置其外观:

searchField.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantLight];

哦,我的天啊。。。就是。非常感谢你!我看不出有什么办法可以让我猜到NSVisualEffectView。@Surflider很高兴我能帮上忙:)我有没有办法将背景颜色更改为更浅的颜色?好了,如果不接触图层(如@Ckouta在另一个答案中建议的)或对其进行子类化,就无法自定义
NSTextField
的外观。如果您觉得必须对其进行自定义,我建议使用子类化方法。在
NSVisualEffectView
下,
NSTextField
将更改其填充颜色以反映背景颜色(就像
NSVisualEffectView
所做的那样),因此其颜色在不同情况下可能会有所不同。关于子类化,似乎
NSTextFieldCell
-drawInteriorWithFrame:inView:
处理动画,但我不确定如何在保留动画的同时实现此方法。这是另一个问题。