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

栏目: Objective-C · 发布时间: 7年前

内容简介:代码看起来很好. blackColor和clearColor可能都是白色空间,但文档说CGGradientCreateWithColors会将颜色转换为你传入的颜色空间,所以这并不重要.我唯一能想到的是尝试为颜色空间传递NULL,让渐变将颜色转换为Generic RGB而不是Device RGB.这可能有用,但不应该有所作为 – 据我所见,它应该以任何方式工作.我建议

我有这个工作代码:

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]然后我的渐变消失.我使用的颜色没有任何区别,我可以使用greenColor和redColor,但它们仍然不起作用.

我错过了什么,或者这是Apple框架中的错误?

代码不起作用.这只是第一部分,其他一切都是一样的.

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

代码看起来很好. blackColor和clearColor可能都是白色空间,但文档说CGGradientCreateWithColors会将颜色转换为你传入的颜色空间,所以这并不重要.

我唯一能想到的是尝试为颜色空间传递NULL,让渐变将颜色转换为Generic RGB而不是Device RGB.这可能有用,但不应该有所作为 – 据我所见,它应该以任何方式工作.

我建议 filing a bug .

翻译自:https://stackoverflow.com/questions/3900519/why-is-my-cggradient-not-working-with-a-preset-uicolor


以上所述就是小编给大家介绍的《cocoa-touch – 为什么我的CGGradient不能使用预设的UIColor?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Convergence Culture

Convergence Culture

Henry Jenkins / NYU Press / 2006-08-01 / USD 30.00

"Convergence Culture" maps a new territory: where old and new media intersect, where grassroots and corporate media collide, where the power of the media producer, and the power of the consumer intera......一起来看看 《Convergence Culture》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具