CAGradientLayer未画出梯度正确
问题描述:
我使用CAShapeLayer画圆并将其设置为CAGradientLayer的掩模,这里是代码:CAGradientLayer未画出梯度正确
CAShapeLayer *circleShapeLayer = [CAShapelayer new];
// draw circle path code here...
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)[UIColor whiteColor].CGColor,
(__bridge id)[UIColor clearColor].CGColor];
// self here means a UIView
gradientLayer.mask = circleShapeLayer;
gradientLayer.frame = self.bounds;
[self.layer addSublayer:gradientLayer];
当运行该应用程序,它将显示一个渐变圆,但梯度很奇怪。
我要的是一个圆圈,在起点,颜色为白色,并在终点色彩分明的颜色,它应该是这样的:
但圆的颜色在Simulator屏幕是:
颜色是对称的。
我认为问题是我没有正确设置,我该如何解决?
答
CAGradientLayer不能沿圆弧绘制渐变。另一方面,掩模层的框架比梯度层的框架太小而看不到清晰的颜色
答
要Umair的回应,它并没有在第一意义,我因为即使whiteColor
或blackColor
正在colorWithRed:green:blue:alpha
牵强,但后来我的文档中阅读:
在渲染时,该颜色映射到插值前的输出色彩空间。
因此,也许这真的是它:
gradientLayer.colors = @[(__bridge id)[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f].CGColor,
(__bridge id)[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.0f].CGColor];
+0
不适合我。 – CokileCeoi
你试过吗? http://stackoverflow.com/questions/5448618/cagradientlayer-showing-as-solid-color/5449257 –