0

我想将作为输入的任何颜色转换为 CGColor 。一切正常,直到 comming 颜色是空间 NSCalibratedRGBColorSpace,但是当它是 NSNamedColorSpace (NSSelectedMenuItemColor) 类型时,它不会在狮子中产生正确的结果。也尝试获取 patternImage 但 NSNamedColorSpace 颜色不响应该 API。我相信很多人都遇到过这个问题,如果可以的话,请帮助我。

我试图隐藏的部分代码

       if ([colorSpaceName isEqualToString:NSNamedColorSpace])
        {
            color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
        }

        NSColorSpace *colorSpaceNS = [color colorSpace];
        colorSpace = [colorSpaceNS CGColorSpace];

        size_t numberOfComponents = CGColorSpaceGetNumberOfComponents(colorSpace);
        CGFloat components[numberOfComponents];
        [color getComponents:components];
        requiredColor = CGColorCreate(colorSpace, components);
        CGColorSpaceRelease(colorSpace);
4

1 回答 1

1

最简单的方法(OS X 10.8 或更高版本):

if ([colorSpaceName isEqualToString:NSNamedColorSpace])
        {
            color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
        }

        requiredColor = [color CGColor];

第二种方式(OS X 10.0 或更高版本):

if ([colorSpaceName isEqualToString:NSNamedColorSpace])        {
      color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
}

CGFloat red, green, blue, alpha;
[color getRed:&red green:&green blue:&blue alpha:&alpha];

requiredColor = CGColorCreateGenericRGB(red, green, blue, alpha);
于 2013-12-03T07:42:53.550 回答