我想将背景设置为NSBox
渐变。在 Interface Builder 中,可以设置渐变的背景NSBox
颜色selectedMenuColor
。
NSBox
只有一个setFillColor
方法,那么 Interface Builder 如何用渐变填充它?
如何以编程方式填充一个NSBox
而不对其进行子类化?子类化将是微不足道的,NSBox
但 Interface Builder 的工作原理表明可能会有更好的解决方案。
我想将背景设置为NSBox
渐变。在 Interface Builder 中,可以设置渐变的背景NSBox
颜色selectedMenuColor
。
NSBox
只有一个setFillColor
方法,那么 Interface Builder 如何用渐变填充它?
如何以编程方式填充一个NSBox
而不对其进行子类化?子类化将是微不足道的,NSBox
但 Interface Builder 的工作原理表明可能会有更好的解决方案。
selectedMenuColor
是一种不显示为纯色的“神奇”颜色。许多这些“神奇”颜色存在于系统中。
我以前用过colorWithPatternImage:
这个。但请注意,您用作图案的图像将被平铺,因此您可能必须将图像的大小调整为框的大小。
可能你最接近的方法是使用创建的 NSColor colorWithPatternImage:
,然后创建你想要的渐变作为图像并将其加载。丑陋,但应该可以工作。我认为子类化是你最好的选择。
selectedMenuColor 颜色实际上是渐变的预渲染图像,而不是动态绘制的渐变,因此无法指定任意渐变作为背景颜色。就像 Ben 说的那样,子类化可能是要走的路。
在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]];