iOS 贝塞尔曲线应用

先简单的介绍下CAShapeLayer

1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性

2,CAShapeLayer需要和贝塞尔曲线配合使用才有意义。

Shape:形状

贝塞尔曲线可以为其提供形状,而单独使用CAShapeLayer是没有任何意义的。

3,使用CAShapeLayer与贝塞尔曲线可以实现不在view的DrawRect方法中画出一些想要的图形

关于CAShapeLayer和DrawRect的比较

DrawRect:DrawRect属于CoreGraphic框架,占用CPU,消耗性能大

CAShapeLayer:CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。动画渲染直接提交给手机GPU,不消耗内存

贝塞尔曲线与CAShapeLayer的关系

1,CAShapeLayer中shape代表形状的意思,所以需要形状才能生效

2,贝塞尔曲线可以创建基于矢量的路径

3,贝塞尔曲线给CAShapeLayer提供路径,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了Shape

4,用于CAShapeLayer的贝塞尔曲线作为Path,其path是一个首尾相接的闭环的曲线,即使该贝塞尔曲线不是一个闭环的曲线


基于CAShapeLayer和贝塞尔曲线的圆形进度条动画


iOS UIBezierPath类 介绍  (更多内容请移步原文)

使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。

Bezier Path 基础

UIBezierPath对象是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。我们使用直线段去创建矩形和多边形,使用曲线段去创建弧(arc),圆或者其他复杂的曲线形状。每一段都包括一个或者多个点,绘图命令定义如何去诠释这些点。每一个直线段或者曲线段的结束的地方是下一个的开始的地方。每一个连接的直线或者曲线段的集合成为subpath。一个UIBezierPath对象定义一个完整的路径包括一个或者多个subpaths。

创建和使用一个path对象的过程是分开的。创建path是第一步,包含一下步骤:

(1)创建一个Bezierpath对象。

(2)使用方法moveToPoint:去设置初始线段的起点。

(3)添加line或者curve去定义一个或者多个subpaths。

(4)改变UIBezierPath对象跟绘图相关的属性。

例如,我们可以设置stroked path的属性lineWidth和lineJoinStyle。也可以设置filled path的属性usesEvenOddFillRule。

当创建path,我们应该管理path上面的点相对于原点(0,0),这样我们在随后就可以很容易的移动path了。为了绘制path对象,我们要用到stroke和fill方法。这些方法在current graphic context下渲染path的line和curve段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至 http://blog.csdn.net/guo_hongjun1611/article/details/7...
    小地阅读 3,195评论 1 6
  • TopicList 一, UIBezierPath 简介 二, UIBezierPath 初始化方法 三, UIB...
    爨乡的云阅读 24,804评论 4 56
  • 谈谈贝塞尔曲线 最近在做项目的时候,需要用到一个动画,非常简单的动画,简单到就是直接对一个View做平移… 然而虽...
    雨润听潮阅读 6,275评论 1 16
  • 如果要烘焙某一个GameObject,步骤为以下几条: 1.将灯光调整好。注意,烘焙之后亮度会降低。 2.需要烘焙...
    不过一书生阅读 1,142评论 0 1
  • 居然真的让我找到了这样可以专门写字的地方。 后天就要考雅思的我,看了一整个上午的程又青和李大仁,没有一点紧迫感。 ...
    Pi_Q阅读 249评论 0 0

友情链接更多精彩内容