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


相关推荐

  • SDIO WIFI_主板usb接口没反应

    SDIO WIFI_主板usb接口没反应SDIO接口的WIFI:1、WIFI是一个sdio卡设备2、具备wifi功能SDIO接口的WIFI驱动就是在WIFI外面套上一个SDIO驱动的外壳SDIO部分代码结构:drivers/mmc下有mmc卡、sd卡、sdio卡驱动。|-mmc||-card//因为记忆卡都是块设备,当然需要提供块设备的驱动程序,这部分是实现将你的SD卡如何实现为块设备的||-core//是整个MMC的核心存,

    2022年9月1日
    1
  • Python实现自动回复_python 微信机器人

    Python实现自动回复_python 微信机器人一简单介绍wxpy基于itchat,使用了Web微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计等功能。总而言之,可用来实现各种微信个人号的自动化操作。(http://wxpy.readthedocs.io/zh/latest/bot.html)安装:wxpy支持Python3.4-3.6,以及2.7版本pip…

    2022年9月1日
    1
  • PyCharm激活码永久有效PyCharm2017.2.5激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2017.2.5激活码教程-持续更新,一步到位PyCharm激活码永久有效2017.2.5激活码教程-Windows版永久激活-持续更新,Idea激活码2017.2.5成功激活

    2022年6月19日
    29
  • plotyy函数_Matlab plotyy函数的使用及问题总结「建议收藏」

    plotyy函数_Matlab plotyy函数的使用及问题总结「建议收藏」Matlabplotyy函数的使用及问题总结1.新建一个.m文件,文件名为plotyy.m,并为其填写代码如下:x=0:0.001:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);holdon;[AX,H1,H2]=plotyy(x,y1,x,y2,@plot);%获取坐标轴、图像句柄set(get(AX(1),’yl…

    2022年6月18日
    27
  • AMM和ASMM切换

    AMM和ASMM切换现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题。但是进入10g之后,自动内存池调节成为一个重要Oracle特性。在10g时,Oracle推出了ASMM(AutomaticSharedMemoryManagement),实现了OracleSGA和PGA内部结构的自调节。进入…

    2022年5月29日
    27
  • 树莓派连接到WiFi并用ssh连接

    树莓派连接到WiFi并用ssh连接硬件:树莓派zerow;系统:2019-09-26-raspbian-buster-lite;1、在/boot/目录下创建文件wpa_supplicant.conf,如下,即可连接到WiFi;country=CNctrl_interface=DIR=/var/run/wpa_supplicantGROUP=netdevupdate_config=1network={…

    2022年5月26日
    39

发表回复

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

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