用alpha绘制CGGradient

时间:2016-01-19 05:15:23

标签: ios core-graphics

我最终试图创建一个渐变叠加层,从60%黑色渐变到40%黑色。结果有很多条带,所以我只想先让两种颜色正常工作。

在第一种情况下,我正在尝试从纯黑色到纯白色的渐变,这种渐变非常完美。

First case

在第二种情况下,我将100%黑色渐变为透明灰色背景。绑扎非常糟糕。

Second case

制作此渐变的代码如下所示:

// Draw the overlay gradient
CGContextTranslateCTM(context, 0.0, size.height);
CGContextScaleCTM(context, 1.0, -1.0);

UIColor *firstColor = [UIColor colorWithWhite:0.0 alpha:1.0];       
UIColor *secondColor = [UIColor clearColor];
CGContextSetBlendMode(context, kCGBlendModeSourceAtop);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

NSArray *coreGraphicsColors = @[(id)firstColor.CGColor, (id)secondColor.CGColor];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)coreGraphicsColors, 0);

static const CGFloat standardDegree = 270;
const CGFloat degree = (standardDegree * M_PI / 180);
const CGPoint center = CGPointMake(size.width / 2, size.height / 2);
const CGPoint startPoint = CGPointMake(center.x - cos(degree) * size.width / 2, center.y - sin(degree) * size.height / 2);
const CGPoint endPoint = CGPointMake(center.x + cos(degree) * size.width / 2, center.y + sin(degree) * size.height / 2);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);

CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);

有没有人有一些创建这些部分透明渐变的经验/技巧?我试过改变一些东西,比如位置和颜色空间,但都无济于事。

1 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助AlphaGradientView