CAShapeLayer
に、私は閉じたUIBezierPath
を描画しました。私はfillColor
を設定することでこの図形を塗りつぶすことができますが、図形をグラデーションで塗りつぶしたいと思います。 CAGradientLayer
をベジェパスで輪郭が描かれた図形にクリップするように設定するにはどうすればよいですか?iOS上にグラデーションを含むパスを塗りつぶし
8
A
答えて
5
あなたが望むのはマスクです。
[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. iOS、扇形を塗りつぶす放射状のグラデーション
- 2. CoreGraphics塗りつぶしのパスとストロークパス
- 3. CGContextでグラデーションを使用してシェイプを塗りつぶす
- 4. Mathematicaでグラフィックスを使ったグラデーション塗りつぶし
- 5. Android:グラデーションの塗りつぶしの色で円弧を描く
- 6. グラデーションの塗りつぶしとキャンバスのサイズ?
- 7. 3方向色グラデーションの塗りつぶしr
- 8. フィールドを塗りつぶし
- 9. toolStripDropDownButtonを塗りつぶし
- 10. モーダルディビジョンは、以下のフォールドを含むウィンドウ全体を塗りつぶします。
- 11. ggplot:geom_polygon内にグラデーションの塗りつぶしを作成する方法
- 12. 角を丸くして境界線とグラデーションを塗りつぶした画像をCで塗ります。
- 13. パス塗りつぶしをアニメートする - Silverlight
- 14. 塗りつぶし楕円
- 15. 塗りつぶしプログラム
- 16. 塗りつぶしマップ - java
- 17. スプライングラフグラデーション塗りつぶし
- 18. itext塗りつぶしテーブル
- 19. ゼロで塗りつぶし
- 20. 3つのランダムな色のグラデーションで画像を塗りつぶす方法は?
- 21. パスの「追従」するパターンの塗りつぶし?
- 22. 特定の色のパスを塗りつぶす
- 23. パスのオブジェクトでUITableViewCellを塗りつぶす - > NSFileManager
- 24. 塗りつぶしなしの描画円IOS
- 25. Android:TextViewsでギャラリーを塗りつぶし
- 26. サンプルデータでデータベースを塗りつぶし
- 27. angularjsのドロップダウンを塗りつぶし
- 28. GDIでポリゴンを塗りつぶし
- 29. Pythonベースマップで国を塗りつぶし
- 30. ncursesウィンドウを色で塗りつぶし
これはいいですが、あなたはまたべきCAGradientlayerはそうは次のようにあなたの形状の境界にそれをクリッピングすることができ-setMask方法を持っていますグラデーションとカラースペースを解放します。 – Sulthan
おかげで、オリジナルのポストはマスクを特色にするので、私は彼らに – WhiteTiger
を置くのを忘れて、私はまた、次のように追加: 'CGContextAddPath(文脈、roundedRectanglePath.CGPath); CGContextDrawLinearGradient''の前に ' ;' 'CGContextClip(文脈) – maggix