CGGradient与Alpha的绘制效果不佳

CGGradient与Alpha的绘制效果不佳

我最终尝试创建一个渐变叠加层,以从60%的黑色渐变为透明,再渐变为40%的黑色。结果有很多 strip ,所以我只是想先使两种颜色正常工作。

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

ios - CGGradient与Alpha的绘制效果不佳-LMLPHP

在第二种情况下,我在纯灰色背景上放置了从100%黑色到透明的渐变。乐队真的很糟糕。

ios - CGGradient与Alpha的绘制效果不佳-LMLPHP

生成此渐变的代码如下所示:

// 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);

有人在创建部分透明的这些渐变方面有一些经验/技巧吗?我尝试更改一些位置和色彩空间等内容,但都无济于事。

最佳答案

这可能对您有帮助AlphaGradientView

关于ios - CGGradient与Alpha的绘制效果不佳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34868953/

10-12 04:36