gpt4 book ai didi

cocoa-touch - 为什么我的 CGGradient 不能使用预设的 UIColor?

转载 作者:可可西里 更新时间:2023-11-01 03:20:17 26 4
gpt4 key购买 nike

我有这个工作代码:

    NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
color = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; // Declaration using components
[shadowColors addObject:(id)[color CGColor]];
color = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.0]; // Declaration using components
[shadowColors addObject:(id)[color CGColor]];

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

CGFloat sw = 10.0; // shadow width

CGPoint top1 = CGPointMake(x, y+width/2.0);
CGPoint top2 = CGPointMake(x + sw, y+width/2.0);

CGPoint side1 = CGPointMake(x+width/2.0, y);
CGPoint side2 = CGPointMake(x+width/2.0, y+sw);

CGContextDrawLinearGradient(c, gradient, top1, top2, 0);
CGContextDrawLinearGradient(c, gradient, side1, side2, 0);
CGGradientRelease(gradient);

颜色声明是我感兴趣的部分,第 2 行和第 4 行。当我如图所示声明它们时,它们工作得很好,但如果我用等价物替换这两行(我认为,至少)[UIColor blackColor][UIColor clearColor] 然后我的渐变消失了。我使用的颜色没有任何区别,我可以使用 greenColorredColor 但它们仍然不起作用。

我是否遗漏了什么或者这是 Apple 框架中的错误?


工作的代码。这只是第一部分,其他都是一样的。

    NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
color = [UIColor blackColor];
[shadowColors addObject:(id)[color CGColor]];
color = [UIColor clearColor];
[shadowColors addObject:(id)[color CGColor]];

最佳答案

代码对我来说看起来不错。 blackColorclearColor 可能都在白色空间中,但是文档说 CGGradientCreateWithColors 会将颜色转换为您传入的颜色空间,所以这应该无关紧要。

我唯一能想到的就是尝试为颜色空间传递 NULL,让渐变将颜色转换为通用 RGB 而不是设备 RGB。这可能有效,但应该不会有什么不同——据我所知,它应该以任何一种方式起作用。

我建议 filing a bug .

关于cocoa-touch - 为什么我的 CGGradient 不能使用预设的 UIColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com