从UIColor获得线性CGGradient

时间:2012-11-24 17:22:44

标签: iphone ios core-graphics gradient

我有一个UIColor对象,它将成为条形图中条形图的颜色。我想将这种颜色变成线性渐变,从颜色到颜色的浅色版本再回到初始颜色。我认为CGGradientCreateWithColorComponents是这个的功能,但我不知道如何使用它...我如何获得我的颜色的较轻版本?并在渐变中使用它。我对核心图形很新。

谢谢...

1 个答案:

答案 0 :(得分:0)

我在Quartz Core框架中使用CAGradientLayer。它接受一组CGColorRef颜色,可用于形成渐变。下面显示了一些示例代码,用于处理UIColor中的color。您可以修改亮度或其他HSB参数以达到您想要的效果。

CGFloat hue;
CGFloat saturation;
CGFloat brightness;
CGFloat alpha;
[ color getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha ]

CAGradientLayer *gradient = [ CAGradientLayer layer ];
gradient.frame = self.bounds;
gradientColorsArray = [ NSArray arrayWithObjects:
    (id) [[ UIColor colorWithHue:1.0 saturation:1.0 brightness:1.0 alpha:1.0 ] CGColor],
    (id) [[ UIColor colorWithHue:1.0 saturation:1.0 brightness:0.75 alpha:1.0 ] CGColor],
     nil ];
gradient.colors = gradientColorsArray;
gradient.startPoint = CGPointMake(0.5f, 0.0f);
gradient.endPoint = CGPointMake(0.5f, 1.0f);
[ self.layer addSublayer:gradient ];