我想将NSBox
的背景设置为渐变。在Interface Builder中,可以将NSBox
的背景颜色设置为selectedMenuColor
这是一个渐变。
NSBox
只有setFillColor
方法,那么Interface Builder如何用渐变填充它?
如何在不对其进行子类化的情况下以编程方式填充NSBox
?继承NSBox
是微不足道的,但Interface Builder的工作建议可能有更好的解决方案。
答案 0 :(得分:2)
selectedMenuColor
是一种“神奇”颜色,不会显示为纯色。系统中存在许多“神奇”颜色。
之前我曾使用colorWithPatternImage:
。但请注意,用作图案的图像将会平铺,因此您可能需要将图像调整为框大小。
答案 1 :(得分:0)
你最接近的可能是使用用colorWithPatternImage:
创建的NSColor,然后创建你想要的渐变作为图像并加载它。丑陋,但应该工作。我认为子类化是你最好的选择。
答案 2 :(得分:0)
selectedMenuColor颜色实际上是渐变的预渲染图像,而不是动态绘制的渐变,因此无法将任意渐变指定为背景颜色。就像Ben说的那样,子类化可能是要走的路。
答案 3 :(得分:0)
在xib
中,选择NSBox
,然后转到效果检查器,检查核心动画层的NSBox
。
现在
IBOutlet NSBox *box;
[box.setWantsLayer:YES];
[box.layer setBackgroundColor:[[NSColor whiteColor] CGColor]];
或
[box.setWantsLayer:YES];
[box.layer setBackgroundColor:[[NSColor colorWithPatternImage:[NSImage imageNamed:@"white.gif"]] CGColor]];