CGGradientCreateWithColors 返回空指针

发布于 2024-10-04 16:40:53 字数 458 浏览 4 评论 0原文

该问题在主题中进行了描述; 下面是我的代码:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

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

不工作。实际上,最后一次调用返回nil

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

怎么了,有人有想法吗?

The problem is described in the subj.;
Here's my code below:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

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

It's not working. Actually, the last call returns nil;

Neither it works when I replace the first argument NULL with a CGColorSpace reference, e.g. Device RGB.

What's wrong, does anyone have an idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

々眼睛长脚气 2024-10-11 16:40:53

您需要从 UIColor 访问 CGColor 转换:

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

此外,建议指定颜色空间:

CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)colors, NULL);

You need to access the CGColor cast from UIColor:

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

Also, specifying a color space is recommended:

CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)colors, NULL);
初见你 2024-10-11 16:40:53

CGGradientCreateWithColors() 需要一个 CGColorRef 数组,而不是 UIColor 数组。据我所知,UIColor 并不是与 CGColorRef 进行免费桥接。

CGGradientCreateWithColors() expects an array of CGColorRefs, not UIColors. AFAIK UIColor is not toll-free bridged with CGColorRef.

网名女生简单气质 2024-10-11 16:40:53
CGFloat locations[2];
locations[0] = 0.0;
locations[1] = 1.0;

CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)colors, locations);
CGFloat locations[2];
locations[0] = 0.0;
locations[1] = 1.0;

CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)colors, locations);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文