最近在学习CALayer相关动画,然后某一天突然发现苹果安装app这动画就很不错啊,所以就想自己实现下。
具体效果如图:
还是不试不知道一试吓一跳啊,这看上去简单的动画没我想象的那么简单。
首先这个动画分两步:
一是中间的圆像时钟一样走一圈;
二是外面的大圆变大到包括整个图片的大小;
首先是第一步:
这时候大圆外部跟小圆内部都是半透明的,小圆走过的部分会变成透明。
一开始我一直想用mask的方式来实现,结果试了老好久还是不行,就扔那儿了。
过了两天再看它,发现其实自己想复杂了,从表面看的话,
第一部分的动画是画一个圆,然后用一个颜色填充它,中间就是画圆的一部分然后填充,问题是这样一点点走的动画好难实现;
所以我就想如果是自己用笔画的话要怎么办?
然后发现用笔画的话,只要用跟半径一样宽的线来画就很easy了,画多少就是多少,想停哪儿就停哪儿!
然后跟代码一对照才恍然大悟,CAShapeLayer就有lineWidth这个属性啊,也这么画就很简单了!
(这里需要注意CAShapeLayer计算fillColor的范围时,是按照线的中心计算的,所以实际在代码中线宽是半径2倍)
透明的问题也是一样,根本不用什么mask,画的时候是覆盖上去,那画反过来不就是一点点露出来了嘛!!!
放到代码里的话,让strokeEnd从1变到0就ok了。 (这里需要注意方向的问题,贝塞尔曲线有取反方向的方法,设置path的时候注意)
那剩下的问题是:怎么画一个中间圆透明,圆与边框之间半透明的图形出来?
我首先想到的是。。。。做个图片。。。然后试了试,果然可以!不过第二步的动画没法做了。。。
所以还是得用CAShapeLayer自己画。。。
这里经春哥指点才解决了这个问题,用到了一个比较高端的参数,就是CAShapeLayer的fillRule参数。
有两个可选值kCAFillRuleEvenOdd 和 kCAFillRuleNonZero
具体参考:http://stackoverflow.com/questions/15375777/cut-out-shape-with-animation 
还有:http://blog.csdn.net/iunion/article/details/26221213
大致是:
nonzero字面意思是“非零”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点情况。从0开始计数,路径从左向右穿过射线则计数加1,从右向左穿过射线则计数减1。得出计数结果后,如果结果是0,则认为点在图形外部,否则认为在内部。下图演示了nonzero规则:
evenodd字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部。下图演示了evenodd 规则:
 

具体就是先画一个矩形,然后再用 appendPath方法添加一个圆进去作为整个CAShapeLayer的path;(也可以用 moveToPoint方法);
利用fillRule让它圆内部透明,外部半透明。
然后把这个layer add 上去就可以了。
剩下的就是一个stokeEnd的动画,就简单了。
第二步:让大圆的半径变大
这个只是个path动画,这里的大圆是上面第一步中最后那个方法画出来的,只需要设置path为最终的大小就可以了,也比较简单
还有一些细节见代码注释;
具体demo见gitHub:https://github.com/Phelthas/LXMRevealDemo 的LXMAppleReveal分类

转载于:https://www.cnblogs.com/Phelthas/p/4668533.html

自己实现苹果安装app动画相关推荐

  1. iOS:苹果企业证书通过网页分发下载安装app

    iOS:苹果企业证书通过网页分发安装app       苹果的企业级证书发布的应用,是不用设备授权即可直接安装,并且不限设备上限.为了方便分发,苹果有协议实现通过网页链接直接下载安装企业级的应用.   ...

  2. debian10 怎么安装mdadm_手机资讯:苹果iPhone6s/iPhone6s Plus怎么下载安装APP

    如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道苹果iPhone6s/iPhone6s Plus怎 ...

  3. iOS:苹果企业证书通过网页分发安装app(PP助手方式)

    本文来自转载,原文地址:http://blog.sina.com.cn/s/blog_6afb7d800101fa16.html (这个网址也有类似介绍:http://www.cnblogs.com/ ...

  4. iOS:苹果企业证书通过网页分发安装app

         苹果的企业级证书发布的应用,是不用设备授权即可直接安装,并且不限设备上限.为了方便分发,苹果有协议实现通过网页链接直接下载安装企业级的应用.       基本的原理就是在生成企业证书授权的i ...

  5. 苹果自带相册打马赛克_解锁iPhone自带隐藏技能,不需要安装app就能使用

    这次给大家推荐一些iPhone自带的实用小功能,不需要安装app,就可以解锁的iPhone隐藏技能. 1. App评分弹窗 各种手机App都喜欢提示我们去应用商店给个5星好评,神烦的啊.可以在手机的[ ...

  6. 给iOS 模拟器“安装”app文件

    前言 刚刚接触iOS的时候,我就一直很好奇,模拟器上面能不能直接安装app呢?如果可以,我们就直接在模拟器上面聊QQ和微信了.直到昨天和朋友们聊到了这个话题,没有想到还真的可以给模拟器"安装 ...

  7. 此beta版本目前不接受任何新测试员_ASO行业资讯|苹果官方App测试工具TestFlight

    ASO行业资讯1数据周报12月8日起,用户在任何 Apple 平台下载 App 之前,App Store 都会先帮助其了解该 App 的隐私保护做法.在每款 App 的产品页面上,用户能了解到该 Ap ...

  8. android 多开app store,原来 iOS 也有双开助手,还是上架了苹果官方 App Store 的

    原标题:原来 iOS 也有双开助手,还是上架了苹果官方 App Store 的 大家都知道iOS不像安卓,可以给App双开,但是现在很多人工作需要都需要双开软件.最近堂堂发现了原来IOS在App St ...

  9. 【Unity开发小技巧】iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路

    目录 一.OS系统和IOS版本更新 ​二:App-Store方式 三:Ad-hoc方式 四:In-house 方式 五: Architecture设置错误 六:App 支持的 iOS 系统版本,和当前 ...

最新文章

  1. 讨论JDK的File.equal()
  2. 网络文件系统(samba、nfs、iscsi)
  3. bfs:01迷宫(洛谷P1141)
  4. 【JEECG TBSchedule】详解应对平台高并发的分布式调度框架TBSchedule
  5. 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
  6. richtextbox自动滚动到最下面_Axure RP 9教程:banner轮播最简单的实现方法
  7. 最前线 | 斗鱼一季度月活用户超虎牙,但上市时间仍不明确
  8. 三次握手,四次挥手(大白话)
  9. HTML字符实体大全
  10. 二进制拆弹实验详解_Population Count算法-求二进制数中1的个数
  11. java返回首页提示空值_是否有使用Optional初始化和返回可为空字段的值的优雅方法 - java...
  12. 【Vue脚手架安装教程】
  13. cxf调用webservice
  14. Tungsten Fabric如何增强Kubernetes的网络性能
  15. html罗马字母怎么打,怎么打罗马数字二 罗马数字 在电脑上怎么打出来呢?
  16. [MFC] CList
  17. 时光穿梭机(撤销修改)
  18. 地图分幅编号C 语言编程,地图分幅编号的计算
  19. MySQL--count函数如果得到null的处理方法
  20. 不属于c语言程序运算符,下面属于C语言关系运算符的是:( ) (A) (B) (C) =! (D) = - 试题答案网问答...

热门文章

  1. 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
  2. ubuntu16.04 npm安装
  3. 日常生活小技巧 -- 百度地图坐标拾取
  4. 用区块链改变人工智能:去中心化带来数据新范式
  5. 深入理解Fabric环境搭建的详细过程
  6. Java敌人跟地图的碰撞_(译)加入敌人和战斗:如果使用cocos2d制作基于tiled地图的游戏:第三部分...
  7. python2定点找色_Python实现按键精灵(二)-找图找色
  8. ie手机浏览器_IE永不为奴?微软Edge浏览器开启双核模式
  9. 国家自然基金标书申报体会
  10. 科技论文的组织-如何写好科技论文之我见(四)