UIBezierPath和CAShapeLayer的关系

CAShapeLayer是基于贝塞尔曲线而存在的, 如果没有贝塞尔曲线提供路径来画出图形, CAShapeLayer就没有存在的意义

下面我画了矩形和椭圆形, 代码如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self createOval];
}

// 矩形(正方形)
- (void)createRect
{
    // 创建矩形贝塞尔曲线路径
    UIBezierPath *rect = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 20, 30)];

    // 创建CAShapeLayer
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    // 设置尺寸
    shapeLayer.frame         = CGRectMake(0, 0, 100, 200);
    // 设置位置
    shapeLayer.position      = self.view.center;
    // 填充颜色
    shapeLayer.fillColor     = [UIColor whiteColor].CGColor;
    // 路径颜色
    shapeLayer.strokeColor   = [UIColor blackColor].CGColor;

    // 关联
    shapeLayer.path = rect.CGPath;

    // 显示
    [self.view.layer addSublayer:shapeLayer];
}

// 椭圆(圆)
- (void)createOval
{
    // 创建椭圆形贝塞尔曲线路径
    UIBezierPath *oval = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 200, 200)];

    // 创建CAShapeLayer
    CAShapeLayer *shapeLayer    = [CAShapeLayer layer];
    // 设置尺寸,
    shapeLayer.frame            = CGRectMake(0, 0, 200, 200);
    // 设置位置(设置的是shapeLayer的中心点位置)
    shapeLayer.position = self.view.center;
    // 设置背景颜色
    shapeLayer.backgroundColor  = [UIColor greenColor].CGColor;
    // 设置填充颜色(注意, 这里不是设置背景颜色)
    shapeLayer.fillColor        = [UIColor redColor].CGColor;
    // 设置边框颜色(路径颜色)
    shapeLayer.strokeColor      = [UIColor blueColor].CGColor;

    // 关联ShapeLayer和贝塞尔曲线
    shapeLayer.path = oval.CGPath;

    // 显示
    [self.view.layer addSublayer:shapeLayer];

}
时间: 2024-10-25 21:28:11

UIBezierPath和CAShapeLayer的关系的相关文章

UIBezierPath 和 CAShapeLayer 画画图

画一个头戴小圆的五边形: - (void)drawPentagon{ //(1)UIBezierPath对象 UIBezierPath *aPath = [UIBezierPath bezierPath]; //开始点 [aPath moveToPoint:CGPointMake(100.0, 1.0)]; //划线点 [aPath addLineToPoint:CGPointMake(200.0, 40.0)]; [aPath addLineToPoint:CGPointMake(160, 1

放肆地用 UIBezierPath 和 CAShapeLayer 画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: Objective-C 1 2 3 4 5 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UICol

使用UIBezierPath和CAShapeLayer画各种图形 (转)

http://www.cocoachina.com/cms/wap.php?plg_nld=1&plg_auth=1&plg_nld=1&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&plg_nld=1&action=article&id=15251&plg_auth=1&plg_uin=1&plg_dev=1&plg_nld=1&plg_usr=1&

iOS 使用UIBezierPath和CAShapeLayer画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColor().CGColo

放肆地使用UIBezierPath和CAShapeLayer画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: 1 2 3 4 5 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColo

贝塞尔曲线与CAShapeLayer的关系以及Stroke动画

1.贝塞尔曲线与CAShapeLayer的关系    1.1CAShapeLayer须要一个形状才干生效,贝塞尔曲线能够创建基于矢量的路径.进而能够给CAShapeLayer提供路径,路径会闭环.    1.2贝塞尔曲线作为CAShapeLayer的path,其path是一个首尾相接的闭环的曲线. 2.实际应用 2.2画椭圆        2.2画矩形,画圆形的方法和上边的一致,仅仅是绘图时调用的方法不一致而已. 3.注意:贝塞尔曲线与CAShapeLayer的frame值互不干扰,贝塞尔曲线仅

使用UIBezierPath和CAShapeLayer画各种图形

使用UIBezierPath和CAShapeLayer画各种图形 CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundCo

UIBezierPath与CAShapeLayer结合画扇形

/*让半径等于期望半径的一半 lineWidth等于期望半径 就可以画圆*/ 可以看出layer的走势是从圆边的中间一半在圆外 一半在圆内 因此让半径等于期望半径的一半 lineWidth等于期望半径 - (void)viewDidLoad { [super viewDidLoad]; for (NSInteger i=0; i<5; i++) { [self itemViewWithOne:72*i*M_PI/180.0 two:72*(i+1)*M_PI/180.0]; } } - (UIV

UIBezierPath和CAShapeLayer配合肆意画图

一.CAShapeLayer CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形 使用CAShapeLayer 绘制一个矩形 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColor().CGColor view.layer.addSublayer(layer)   CASh