首页 > 代码库 > UIBeaierPath 与 CAShapeLayer
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。