cocoa - 将 NSGradient 转换为 NSColor

标签 cocoa nscolor nsgradient

是否可以将 NSGradient 转换为 NSColor

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

这是我的方法,我希望能够将 NSGradient 作为 NSColor 传递,这显然我不能,有什么方法可以将其转换为 NSColor 吗?

最佳答案

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

  1. 一个可以按照您喜欢的方式绘制渐变的 block 。
  2. An image that is backed by the block.
  3. A color that repeats the image as a pattern.

通过这种方式,您可以创建看起来像任何颜色的颜色,包括渐变。

也就是说,如果您尝试让渐变适应背景的大小(通过使用传递给 block 的矩形)并且背景是 ScrollView 中的 TextView ,则这可能无法在调整窗口大小时正常工作。 (当我不久前尝试过时,图案没有重新绘制 block ;它只是平铺,这至少在一个维度上看起来很奇怪。)如果你的渐变或窗口的大小是固定的,那么你就不会遇到这个问题.

关于cocoa - 将 NSGradient 转换为 NSColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16139065/

相关文章:

macos - 调整 NSWindow 大小以匹配 Storyboard 中的 View Controller 大小

macos - 带背景颜色的 NSTabView

nsmenu - 如何访问系统选择的菜单项蓝色?

objective-c - NSGradient 转换为 NSColor

objective-c - 为渐变位置创建 CGFloat 数组

iphone - NSMutableArray 对象认为它是一个 NSArray :(

swift - 自定义 NSLevelIndicator 不显示分配的值

cocoa - 当它尝试运行 isKindofClass 时,我收到 sigabort