3
我試圖在CAShapeLayer上應用漸變顏色。對於我寫的代碼,CAShapeLayer上的漸變顏色效果
-(void)addCircle{
{
// Drawing code
UIBezierPath *aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)
radius:125
startAngle:0
endAngle:DEGREES_TO_RADIANS(180)
clockwise:NO];
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setFrame: self.frame];
[shapeLayer setPath: [aPath CGPath]];
shapeLayer.lineWidth = 30.0f;
[shapeLayer setStrokeColor:[[UIColor redColor] CGColor]];
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
[shapeLayer setMasksToBounds:YES];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.startPoint = CGPointMake(0.5,1.0);
gradientLayer.endPoint = CGPointMake(0.5,0.0);
gradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);
NSMutableArray *colors = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
[colors addObject:(id)[[UIColor colorWithHue:(0.1 * i) saturation:1 brightness:.8 alpha:1] CGColor]];
}
gradientLayer.colors = colors;
[gradientLayer setMask:shapeLayer];
[self.layer addSublayer:shapeLayer];
}
但我有沒有這樣的漸變色輸出,
我想這樣最後輸出,
但我的主要目標是採用梯度對CAShapeLayer有影響。我在給定的代碼中錯了什麼地方?
**在'drawRect:'內添加子圖層肯定是錯誤的。** – 2013-04-04 08:33:32
這就是說:你似乎在混合兩種不同的繪圖方法。一個是在drawRect中定製繪圖:一個是圖層。無論選擇哪種方法,您都必須在添加陰影和遮蓋白色漸變的幾個步驟中完成繪圖。你能否澄清一下你有什麼問題? – 2013-04-04 08:38:14
@DavidRönnqvist,首先我很高興向我展示我的錯誤。我想在紅色圓圈上應用漸變顏色效果。看到我的第二張圖片,我想創建相同的效果。其實我不知道如何創建末端輸出米圈,但我認爲第二幅圖像上的薄白色顏色就像漸變圖層,爲什麼我選擇了這種場景。 – Tirth 2013-04-04 08:57:01