美文网首页iOS界面特效篇iOS DeveloperiOS Development
iOS自定义Loading旋转加载圈(附代码)

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

作者: Jalynn葸 | 来源:发表于2016-12-26 22:52 被阅读1107次

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

    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请在这里下载

    相关文章

      网友评论

      本文标题:iOS自定义Loading旋转加载圈(附代码)

      本文链接:https://www.haomeiwen.com/subject/ydhsvttx.html