CGGradientCreateWithColors返回一个空指针

时间:2010-11-27 17:00:30

标签: ios cgcolorspace

问题在主题中描述; 这是我的代码:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor blueColor], nil];
CGGradientRef gradient = CGGradientCreateWithColors(NULL, (CFArrayRef)colors, NULL);

无法正常工作。实际上,最后一次通话会返回nil;

当我用NULL引用替换第一个参数CGColorSpace时,它都不起作用,例如设备RGB。

出了什么问题,有没有人有想法?

3 个答案:

答案 0 :(得分:17)

您需要访问来自CGColor的{​​{1}}演员:

UIColor

另外,建议指定色彩空间:

NSArray *colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor, (id)[UIColor blueColor].CGColor, nil];

答案 1 :(得分:3)

CGGradientCreateWithColors()需要一个CGColorRef s的数组,而不是UIColor s。 AFAIK UIColorCGColorRef没有免费联网。

答案 2 :(得分:2)

CGFloat locations[2];
locations[0] = 0.0;
locations[1] = 1.0;

CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)colors, locations);