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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 格式化hdfs的命令_hadoop的启动命令

    格式化hdfs的命令_hadoop的启动命令总结:上传文件:put、copyFromLocal、moveFromLocal下载文件:get、copyToLocal、moveToLocal查看文件:text、cat、tail合并文件:getmerge命令详解HDFS命令基本格式:hadoopfs-cmd<args>表格:选项名称使用格式含义-ls-ls查看指定路径的当前目录结构-lsr-lsr递归查看指定路径的目录结…

    2022年9月1日
    5
  • FFmpeg从入门到精通笔记之四[通俗易懂]

    FFmpeg从入门到精通笔记之四[通俗易懂]介绍在FFmpeg环境下使用libx264进行H.264(AVC)软编码的操作,H.265(HEVC)的编码操作使用的是libx265,但是参数基本类似。FFmpeg软编码H.264与H.265当前网络中常见的视频编码格式要数H.264最为火热,支持H.264的封装格式有很多,如FLV、MP4、HLS(M3U8)、MKV、TS等格式FFmpeg本身并不支持H.264的编码器,而是由第三方模块…

    2022年6月26日
    57
  • 【Python技巧】:pip卸载后,如何安装pip[通俗易懂]

    【Python技巧】:pip卸载后,如何安装pip[通俗易懂]【Python技巧】:pip卸载后,如何安装pip

    2022年10月19日
    3
  • AWVS工具介绍[通俗易懂]

    AWVS工具介绍[通俗易懂]AWVS基本操作  AWVS工具在网络安全行业中占据着举足轻重的地位,作为一名安全服务工程师,AWVS这款工具在给安全人员做渗透测试工作时带来了巨大的方便,大大的提高了工作效率。AWVS工具介绍  AcunetixWebVulnerabilityScanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它包含有收费和免…

    2022年4月19日
    60
  • linux如何安装node_node 环境变量

    linux如何安装node_node 环境变量前言:linux中安装node环境步骤:第一步:官网下载node安装包,点我进入第二步:解压到个人的根目录下,也就是/home/haoxing(这是你自己的名字)/nodejs把文件夹名字改成nodejs方便使用第三步:配置环境变量1,打开终端入口2,输入命令:注意,带sudo是可编辑,不带的是只读sudovim/etc/profile3,输入你的密码4,shift+i打开编辑模式,加上以下代码,注意/home/…

    2025年11月5日
    3
  • tdscdma手机linux,全方位介绍——TD-SCDMA无线技术(1)[通俗易懂]

    tdscdma手机linux,全方位介绍——TD-SCDMA无线技术(1)[通俗易懂]全方位介绍——TD-SCDMA无线技术(1)无线3G中的TD-SCDMA无线技术绝对是中国人所关注的重点,不仅仅因为它是我国自主研发的,更因为它是结合了多种高端无线通信技术的联合体。那么,本文将为大家详细介绍TD-SCDMA无线技术的知识。一,TD-SCDMA无线技术是什么?TD是TD-SCDMA——TimeDivision-SynchronousCodeDivisionMultiple…

    2022年10月4日
    1

发表回复

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

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