CALayer+CABasicAnimation能够制做不少简单的动画效果,以前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABasicAnimation制做的等待转圈动画,还有一个是利用CAShapeLayer制做的随移动距离而渐变的按钮动画,而此次要制做的圆点缩放动画用到的是CAReplicatorLayer,CAShapeLayer与CAReplicatorLayer都是CAlLayer的子类,根据不一样应用场景,可使用不一样的layer来知足要求。html
动画效果如图:ios
实现过程,画一个圆,复制三份,添加动画效果便可编程
在制做动画前,须要弄清楚anchorPoint与position之间的关系,对最终将动画渲染在屏幕上的位置相当重要。segmentfault
①position:CAReplicatorLayer的position决定了其在父视图中位置坐标。app
②anchorPoint:CAReplicatorLayer的anchorPoint决定了其position的位置。ide
anchorPoint的默认值为(0.5, 0.5),此时CAReplicatorLayer在父视图中坐标位置对应其中心点的坐标。函数
而若是想使用父视图同样坐标系标准,即像添加普通的view同样设置坐标,而不用去考虑计算position在CAReplicatorLayer中心点带来的影响,将anchorPoint设置为(0, 0)便可,此时position的位置在CAReplicatorLayer的左上角顶点动画
①instanceCount,CAReplicatorLayer中子元素的份数,ui
②instanceDelay,CAReplicatorLayer中子元素动画执行时延迟时间,spa
③instanceTransform,CAReplicatorLayer中子元素形变方式,本例中主要就是X轴方向平移复制。
如图所示进行相关初始化,animationDuration为动画执行一次的总时间,animationInstanceCount为拷贝后子元素的个数, instanceDelay = animationDuration / animationInstanceCount 是为了让动画看起来具备连续性
circle为动画中的小圆点,anchorPoint采用默认值,小圆点的中心恰好在animationContainerView的边界上,因为须要和animationContainerView边界左对齐,因此把圆点circle往右移动了一个半径的距离,以下图所示,左图为不设置偏移的状况,右图为设置偏移后的状况。
autoreverses这个参数默认为NO,这里设置为YES,目的是重复执行动画时,一次动画执行完毕后,下一次动画执行相反的效果,即这一次圆点执行缩小的动画效果,下一次执行放大的动画效果,这样循环往复,让动画更具连续性,而不是缩小后突兀的就恢复原来大小。
苹果审核时不容许带有版本检测强制更新功能,若是须要加上强制更新功能以备不时之需,就须要提早设置好。
方法之一是:在某一时刻请求后台接口,检测是否须要强制更新,例如applicationDidBecomeActive的时候,接口中约定好一个关于开启强制更新的变量以及相关版本号,当须要强制更新时,经过检测该变量及比较版本号便可经过弹框方式提醒甚至强制用户去升级,固然这不是一个好的体验。
以前博客记录了关于远程消息推送的东西,此次要在远程消息推送基础上加语音提示,语音提示主要是为了更方便的提示用户接收推送信息,例如商家收到美团外卖订单时,店内会听到新订单的语音提示,提醒商家接单。加语音提示主要有如下几个关键点:
在工程里预先存放语音提示的音频文件,供接收消息时播放,文件格式必须为aiff、wav或caf之一,这里将音频文件存为了wav格式使用,且音频文件播放时长须要控制在30秒之内,不然将自动被替换为默认语音提示。
本例中使用AVAudioPlayer播放音频文件,因此须要引入AVFoundation.framework
在aps信息里的sound对应工程里存放的音频文件名,注意后缀,本例中sound对应的文件名没有加入后缀,而是在代码中给音频文件添加后缀。
以前在函数中以临时变量方式声明AVAudioPlayer并播放音频文件,一直没有声音,后来发现是尚未来得及播放,AVAudioPlayer实例就已经被释放了,以属性方式声明后解决此问题,相关代码以下
仔细辨承认以发现,app在前台运行时收到推送消息播放语音提示的声音是要略大于app在后台运行时收到推送消息播放语音提示的声音,由于AVAudioPlayer控制的音量是在系统音量的级别上来进行调整,没法调节系统音量,若是要调节系统音量,须要再单独处理,而且注意播放音频文件后将系统音量恢复成原来大小。具体参考:iOS编程修改系统音量
相关代码以下所示:
Core Animation Programming Guide--Core Animation Basics
CALayer Animation - Replicator Animation