在Github上看到一些进度条的功能,都是通过Core Graph来实现。无所谓正确与否,但是开发效率明显就差很多了,而且运行效率还是值得考究的。其实使用苹果提供的Core Animation能够非常简单和方便的实现环形进度条效果,而且还可以高效的保证动画效果,无论是前进还是后退(语言水平比较有限,就多用代码说话)。
1、先来一个结果
80%的状态:
99%的状态:
2、需要用到的宏:
- #define degreesToRadians(x) (M_PI*(x)/180.0) //把角度转换成PI的方式
- #define PROGREESS_WIDTH 80 //圆直径
- #define PROGRESS_LINE_WIDTH 4 //弧线的宽度
3、CAShapeLayer
首先,你得要引入Core Animation框架。为了实现环形效果,需要使用到CAShapeLayer,原理是CAShapeLayer可以通过指定Path的方式实现生成一个图形,非常方便。4、UIBezierPath
由于需要画一个圆形,UIBeziperPath是非常好用的画圆形的工具。实现下面的代码可以画出上面所示的整个轨道。这个圆形是从-210度的角度到30度。
- UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(40,