iOS自定义Loading旋转加载圈(附代码)

项目中为了显示设备正在运行特用一个旋转行走渐变的圈表示,如下图外圈的小圆点:(里圈进度条已在前面文章中总结原理及代码)


iOS的绘图一般是在CALayer上面绘制,所以上图的所有圈圈都是在layer上。

1.现在View上创建一个小圆圈,并给这个圆圈添加Animation和3D变换

2.然后再用CAReplicatorLayer这个类复制多个同样的圆,并设置圆的位置和3D变换

这里特别的记录一下CATransform3D和CAReplicatorLayer的作用和使用:

2D是基于平面位置的坐标,只有x,y轴,这里的3D就多加了一个z轴,在2D或3D空间中,对一个物体执行平移、缩放或旋转这些操作时需要使用矩阵运算。

CATransform3D:是一个4维矩阵如下:

structCATransform3D

{

CGFloatm11, m12, m13, m14;

CGFloatm21, m22, m23, m24;

CGFloatm31, m32, m33, m34;

CGFloatm41, m42, m43, m44;

};

CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz):是沿着x,y,z的位置上的平移。

CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz):是x,y,z的缩放倍数。

CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x, CGFloat y, CGFloat z):是图形的旋转效果。

angle:旋转的弧度,所以要把角度转换成弧度:角度 * M_PI / 180。

x:向X轴方向旋转。值范围-1 --- 1之间

y:向Y轴方向旋转。值范围-1 --- 1之间

z:向Z轴方向旋转。值范围-1 --- 1之间

CAReplicatorLayer:

CAReplicatorLayer可以高效生成许多相似的图层。它会绘制一个或多个图层的子图层,并在每个复制体上应用不同的变换。

如下函数,就是生成count个具有transform变换的copyLayer


有不足处和不准确地方欢迎改正,觉得有用或者喜欢记得点颗❤️哦。

详细demo请在这里下载

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

相关阅读更多精彩内容

友情链接更多精彩内容