UIBeaierPath 与 CAShapeLayer

Posted Da雪山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIBeaierPath 与 CAShapeLayer相关的知识,希望对你有一定的参考价值。

CAShapeLayer是基于贝塞尔曲线而存在的, 如果没有贝塞尔曲线提供路径来画出图形, CAShapeLayer就没有存在的意义, CAShapeLayer可以使得不用在   drawRect:方法中实现画图.

另外, CAShapeLayer是属于CoreAnimation框架的, 是基于GPU的来进行渲染的,

         不比使用CoreGraphic框架, 是基于CPU来渲染的, 所以CAShapeLayer效率相对比较高一些

下面我简单的使用CAShapeLayer和贝塞尔曲线画了矩形和椭圆形,

// 矩形(正方形)
- (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];
    
}

以上是关于UIBeaierPath 与 CAShapeLayer的主要内容,如果未能解决你的问题,请参考以下文章

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司

RESTfulREST 与 RESTful 理解与实践