将NSGradient转换为NSColor

时间:2013-04-22 03:40:51

标签: cocoa nscolor nsgradient

是否可以将NSGradient转换为NSColor

- (void) viewWillDraw {
    NSGradient *grad = [[NSGradient alloc] initWithStartingColor:[NSColor lightGrayColor]    endingColor:[NSColor darkGrayColor]];
    [super setBackgroundColor:*gradient*;
}

这是我的方法,我希望能够将NSGradient作为NSColor传递,显然我不能,有没有办法将它转换成一个?

2 个答案:

答案 0 :(得分:1)

在10.8上,您可以按以下顺序创建:

  1. 根据您的喜好绘制渐变的块。
  2. An image that is backed by the block.
  3. A color that repeats the image as a pattern.
  4. 通过这种方式,您可以创建一个看起来像任何东西的颜色,包括渐变。

    也就是说,如果你尝试让渐变适应背景的大小(通过使用传递给块的矩形)并且背景是滚动视图中的文本视图,这可能无法正常使用窗口大小调整。 (当我尝试了一段时间后,图案没有重新绘制块;它只是平铺,至少在一个维度看起来很奇怪。)如果你的渐变或窗口的大小是固定的,那么你就不会有这个问题

答案 1 :(得分:0)

NSGradient无法转换为NSColor。

  

NSGradient类为绘制渐变填充提供支持   颜色,也称为石英中的阴影。这个课提供   绘制径向或线性(轴向)梯度的便捷方法   矩形和NSBezierPath对象。

如果您想将viewBackground设置为效果(渐变效果),您需要执行以下操作:

[grad drawInRect:<the rect of your view> angle:270]; //angle is upto your requirement,