zoukankan      html  css  js  c++  java
  • CABasicAnimation精讲

    前言

    本教程写了这个效果图的demo,同时总结CABasicAnimation的使用方法。

    image

    看完gif动画完,看到了什么?平移、旋转、缩放、闪烁、路径动画。

    实现平移动画

    实现平移动画,我们可以通过transform.translation或者水平transform.translation.x或者垂直平移transform.translation.y添加动画。

    translation是平移的意思,大家需要记住它。这里只是水平移动,其实我们可以直接对transform.translation.x设置动画。不过直接使用transform.translation也是可以的,我们设置y值为0就可以了。

    首先,我们通过属性路径的方法来创建动画对象:

    我们设置目的地为水平移动到屏宽再减去控件的宽50,由于我们只是水平移动,垂直方向没有移动,因此第二个参数设置为0即可。我们需要明确一点,toValue这里是指移动的距离而不是移到这个点:

    对于其它属性的设置,看注释里的说明就可以明白了。

    旋转动画

    旋转动画需要借助CATransform3D这个表示三维空间的结构体,可以X轴旋转、Y轴旋转、Z轴旋转:

    我们通过属性路径创建动画:

    然后通过创建CATransform3D结构体,指定旋转的角度为180度,X、Y轴不旋转,Z轴旋转180度:

    其它属性设置与平移动画一样。

    缩放动画

    transform.scale这个是图的属性路径,设置scale值就可以达到缩放的效果:

    我们通过属性路径方法创建动画对象:

    我们设置了初始变换和最终变换为1和0:

    其实由于图初始状态值为正常状态,没有任何缩放,因此其值本就是1,所以fromValue可以不设置的。

    闪烁动画

    我们这里说的闪烁动画其实就是透明度的变化,当然我们不能通过alpha值的变化来实现闪烁动画,因此这个属性是不具备隐式动画效果的。不过系统提供了opacity,我们可以通过这个值的变化来实现闪烁效果。

    我们通过属性路径opacity来创建动画对象,注意不能使用alpha,否则不会有动画效果的:

    我们设置透明度从1->0变换,其它属性设置与上面平移动画一样:

    路径动画

    路径动画这里添加了灰常详细的注释说明,几乎都包含了所有常用的属性设置了:

    在图中position是层相对于父层的中心,而UI控件的center中心一样。这里要整体曲线路径移动,我们通过position中心点的变换就可以曲线路径移动。

    这里设置了CAMediaTiming协议中的所有属性,详细看代码中的注释吧,已经很详细了!

  • 相关阅读:
    接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
    SpringBoot整合Netty
    简单的RPC框架
    基于redis的分布式锁的分析与实践
    8种方案解决重复提交问题
    领券中心项目,如何用 Redis 做实时订阅推送的?
    IM(即时通讯)服务端(二)
    IM(即时通讯)服务端(一)
    0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
    int (*a)[10]和int *a[10]的区别
  • 原文地址:https://www.cnblogs.com/yjg2014/p/5454995.html
Copyright © 2011-2022 走看看