Swift 启动页动画(CAKeyframeAnimation)

Swift 启动页动画(CAKeyframeAnimation)

前言

项目开发中有个需求,需要给启动页加一个正在加载的动画,先上一个效果图。

图片描述

上图最底层浅色圆圈,我们定义为浅A,转动的为深B,可以看到,深B是围绕着浅A圆圈的边缘旋转的。 下面对实现思想进行分析。

剖析

核心的难点是如何让深B紧凑沿着浅A的圆边做轨迹运动,为此,我们需要确定一个圆轨迹C,然后让深B在轨迹C上做圆周运动

图片描述

红色圆圈是轨迹C,它的圆点就是浅A的圆点,然后就是确定半径,为了让深B沿着浅A的边缘运动,所以轨迹C的半径应该是(浅A直径 – 深B直径 )/ 2。

图片描述

代码

确定轨迹C的圆点和半径


let centerX = launchBottomView.center.x
let centerY = launchBottomView.center.y
let radius = (launchBottomView.bounds.size.width - launchTopView.bounds.size.width) / 2

创建椭圆轨迹C


let boundingRect = CGRect(x: centerX - radius, y: centerY - radius, width: radius * 2, height: radius * 2)
let path = CGPath(ellipseIn: boundingRect, transform: nil)

深B做动画


let animation = CAKeyframeAnimation(keyPath:"position")
animation.duration = 3
animation.path = path
animation.calculationMode = kCAAnimationPaced
animation.repeatCount = HUGE
launchTopView.layer.add(animation, forKey:"Move")

调用确定圆点、半径、动画的位置要写在
viewDidAppear方法中,否则会导致获取的控件大小不准确。

源码

https://github.com/LSnumber1/…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101677.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Redis的数据类型以及各类型的操作

    Redis的数据类型以及各类型的操作

    2022年4月3日
  • SSM整合实现增删改查操作【保姆式教学】

    SSM整合实现增删改查操作【保姆式教学】SSM整合实现增删改查操作【超详细】准备工作环境准备数据库准备开始干活新建个Maven项目ssmtest,加上Web支持添加依赖完整的pom.xml创建entity、dao、service、controller包实体类编写添加lombook持久层接口编写业务层接口编写业务层实现类编写表现层编写整合步骤保证Spring框架在web工程中独立运行第一步:编写spring配置文件并导入约束第二步:使用注解配置业务层第三步:导入log4j.properties配置文件第四步:测试spring能否独立

    2022年5月25日
  • Python爬虫系列:爬取小说并写入txt文件

    Python爬虫系列:爬取小说并写入txt文件Python爬虫系列——爬取小说并写入txt文件文章介绍了如何从网站中爬取小说并写入txt文件中,实现了单章节写取,整本写取,多线程多本写取。爬虫使用的python版本为python3,有些系统使用python指令运行本脚本,可能出现错误,此时可以试一试使用python3运行本脚本。本文是一个教程,一步步介绍了如何爬取批量小说内容以及存储这是txt文件中,以下是项目源码地址。

    2022年5月29日
  • 腾讯T4技术专家_T4正常值

    腾讯T4技术专家_T4正常值T4 级老专家:AIOps 在腾讯的探索和实践

    2022年4月20日
  • windows杀进程命令 杀不掉_windows杀掉进程

    windows杀进程命令 杀不掉_windows杀掉进程1丶获取某端口的进程netstat-ano|findstr80802丶获取任务列表tasklist|findstr148203丶杀进程taskkill/pid14820-t-f

    2022年9月5日
  • java编程基础(入门级)(超级完整版)「建议收藏」

    java编程基础(入门级)(超级完整版)「建议收藏」java基础编程01基础知识1.计算机基础【1】进制A.十进制转化二进制除以2,求余数,商继续除以2,一直到0为止,从底下往上得到结果。B.二进制转化十进制1|1|0|023∣22∣21∣202^3|2^2|2^1|2^023∣22∣21∣208+4+0+0=128+4+0+0=128+4+0+0=12【2】计算机的储存方式位(bit):0或1字节(byte):8位1字节,数据储存的最小单位1KB=1024Byte1MB=1024KB1GB=

    2022年6月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号