在UIView上绘制径向渐变(圆圈)

时间:2013-10-26 08:47:03

标签: ios objective-c uiview gradient

遗憾的是,我无法通过在UIView中绘制径向渐变来找到解决方案。

看......这就是我想要绘制它的方式(这是在PS中制作的): enter image description here

但我现在坚持这个: enter image description here

这是我的代码:

CGGradientRef radialGradient;
CGColorSpaceRef rgbColorspace;

size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
const CGFloat *colorComponents = CGColorGetComponents(textColor.CGColor);
CGFloat components[8] = { colorComponents[0], colorComponents[1], colorComponents[2], 1.0,  // Start color
    1.0, 1.0, 1.0, 1.0 }; // End color

rgbColorspace = CGColorSpaceCreateDeviceRGB();
radialGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);

CGRect currentBounds = self.bounds;
CGPoint midCenter = CGPointMake(CGRectGetMidX(currentBounds), CGRectGetMidY(currentBounds));

CGContextDrawRadialGradient(myContext, radialGradient, midCenter, 8.0, midCenter, 1.0, kCGGradientDrawsAfterEndLocation);



CGGradientRelease(radialGradient);
CGColorSpaceRelease(rgbColorspace);

我希望有人能给我正确的提示;)

享受周末, 克里斯

1 个答案:

答案 0 :(得分:2)

基本上,您需要使用2个以上的位置。通过2个位置,您可以在起始位置和结束位置之间获得恒定的梯度。您的示例图像显示了大多数位置的起始颜色,最终颜色较淡。查看样本图像,您将需要至少3个位置并更改最终颜色。