我想将背景设置为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]];