在CAShapeLayer
上,我繪製了一個閉合的UIBezierPath
。我可以通過設置fillColor
來填充這個形狀,但是我想用漸變填充形狀。我如何設置CAGradientLayer
,以便剪切到bezier路徑概述的形狀?在iOS上用漸變填充路徑
8
A
回答
5
你想要的是一個面具。 CAGradientlayer有-setMask方法,可以把它夾到你的形狀的界限,像這樣:
[gradientLayer setMask:shapeLayer];
19
一個例子草案將是以下幾點:
...
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *gradientColor = [UIColor colorWithRed:0.51 green:0.0 blue:0.49 alpha:1.0];
NSArray *gradientColors = [NSArray arrayWithObjects:
(id)[UIColor blueColor].CGColor,
(id)gradientColor.CGColor,
(id)[UIColor redColor].CGColor, nil];
CGFloat gradientLocations[] = {0, 0.5, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)gradientColors, gradientLocations);
UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 200, 200) cornerRadius:6];
CGContextSaveGState(context);
[roundedRectanglePath fill];
[roundedRectanglePath addClip];
CGContextDrawLinearGradient(context, gradient, CGPointMake(10, 10), CGPointMake(210, 10), 0);
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
...
相關問題
- 1. 如何用drawRect中的漸變填充路徑:?
- 2. 如何用漸變色填充貝塞爾路徑
- 3. 路徑填充不填充路徑
- 4. 4路漸變填充。可能?
- 5. iOS,繪製徑向漸變,填充四邊形
- 6. 用漸變填充geom_tile
- 7. 在iOS上,如何用大綱填充路徑? (或兩個填充和描邊路徑)
- 8. 沿路徑漸變
- 9. RaphaelJS路徑對象圖像填充和漸變在CodeIgniter中不起作用?
- 10. 沿路徑使用漸變
- 11. iOS Core Graphics填充路徑的反轉?
- 12. WPF在MouseOver上更改路徑填充
- 13. ImageMagick路徑填充
- 14. jVectormap漸變背景填充
- 15. Quartz2d漸變填充橢圓
- 16. 如何填充漸變
- 17. 矩形漸變填充
- 18. 樣條圖漸變填充
- 19. MPAndroidChart填充顏色漸變
- 20. 漸變不填充IBDesignable UIView
- 21. 使用javascript填充路徑
- 22. 如何用playn(1.3)中的徑向漸變填充圖層?
- 23. (徑向)漸變填充使用OpenGL ES的
- 24. 貝塞爾路徑填充路徑?
- 25. Raphael.js路徑/行與漸變?
- 26. iOS。 OpenGL的。用漸變填充曲線下面積線
- 27. 用漸變填充百分比
- 28. 如何用漸變填充matplotlib欄?
- 29. ggplot漸變填充不起作用
- 30. SVG使用和漸變作爲填充
這是很好的,但你也應該釋放漸變和顏色空間。 – Sulthan 2013-03-17 13:48:52
感謝,我忘了把它們 – WhiteTiger 2013-03-17 14:23:38
,因爲原帖特色面具,我還增加了以下內容: 'CGContextAddPath(背景下,roundedRectanglePath.CGPath);'' CGContextClip(背景);' CGContextDrawLinearGradient'之前' – maggix 2013-07-04 10:32:43