CoreAnimation中layer动画闪烁的原因及解决
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
网上有一段Core Animation层动画的例子,是将view中的云朵从左向右移动,直到移出屏幕,这时再将云朵移到最左端然后重复移动动画.
所有动画在layer上完成,不过有个小问题,就是第一次每朵云动画完成时,会在其原位置处有一个闪烁,然后才会移动到屏幕最右端,而随后的运动动画都没有这个问题了:
由于录制gif文件时使用的帧率比较低,所以上图较难展示这个问题.不过实际App运行的时候每朵云在第一次移出屏幕的时候都会在初始位置闪烁一下再运行随后的动画.这是为什么呢?
因为layer动画不同于view层面上的动画,它实际不会修改原始view的任何属性.就拿云朵移动的动画来说,你虽然看上去改变了云朵的x坐标使其向右移动,可实际上原来的云朵ImageView根本还在原地,只不过CA用其外观创建了一个临时绘制进行移动,原来的云朵被暂时隐藏起来;一旦移动动画完成,该临时对象被删除,原来的云朵会在初始位置出现.
那么为什么只有动画第一次会出现闪烁呢?因为在第一次动画结束后,我在代码中修改了云朵view的x坐标,所以后面云朵的x坐标都和layer动画的fromValue相同,这将保证后续动画不会发生”闪烁”
知道了原因,解决就很简单了,我只要在第一次动画前将云朵的x坐标修改为指定的位置,同时调整fromValue的值为初始位置即可:
func animateCloud(layer:CALayer){let cloudSpeed = 15.0/Double(view
CoreAnimation中layer动画闪烁的原因及解决相关推荐
- VRay动画渲染闪烁的原因和解决办法
3DMAX+VRayVRay动画渲染闪烁的原因和解决办法 原因1:VRay动画渲染闪烁是因为发光贴图采样的不连续造成的:(标准情况) 原因2:摄像机运动,物体和光源都在变化和运动,其实还有种情况是场景 ...
- 微服务架构中的雪崩问题产生原因及解决办法
微服务架构中的雪崩问题产生原因及解决办法 参考文章: (1)微服务架构中的雪崩问题产生原因及解决办法 (2)https://www.cnblogs.com/panchanggui/p/10330924 ...
- mouseup 左键_javascript中mouseup事件丢失的原因与解决办法
这篇文章主要跟大家介绍了关于Javascript中mouseup事件丢失的原因与解决办法的相关资料,文中给出详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧. 前言 当实现类似E ...
- 思科ccie和华为hcie中交换机环路的产生原因和解决方法
思科ccie和华为hcie中交换机环路的产生原因和解决方法,互联网时代对于我们的生活产生了非常巨大的影响,给我们带来了很多的便利,但是同时给我们带来的还有许许多多的问题,如网络安全. 有人说过在当今的 ...
- 画图时屏幕闪烁的原因和解决方法
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题.而且多数人认 为MFC的绘图函数效率很低,总是想寻求其它的解决方案. MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用 ...
- linux下虚拟lcd屏幕总线错误,LCD显示屏出现闪烁的原因与解决
比较CRT与LCD两类显示屏时,其中一项最为普遍见到的差别是闪烁问题.一般都会以为CRT显示屏有闪烁,而LCD则没有,查实两类显示屏皆有某程度上的闪烁,机制上的差异和纠正方法影响到成功率.本文讲述LC ...
- php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧
很多程序员在进行php开发的时候都遇到过出现空白页的请,综合分析来说,在php编程中出现空白页面可能是由以下几个原因造成的: 1.逻辑错误 逻辑错误是最难排除的,从表面上看,也许代码是合法的,是正规的 ...
- sketch颜色和html颜色不一致,photoshop和sketch中图片色彩不一致的原因和解决办法...
静电说:之前有用户提过类似的问题,他发现在photoshop中图片的色彩和sketch中图片的色彩不一致.下面看看静电翻译的一篇 bohemiancoding团队发表的博文,详细阐述了这种现象产生的原 ...
- uni-app浏览器、iPhone手机显示轮播图,微信、支付宝小程序中不显示的错误原因及解决办法
源码: index.vue: <template><view class="main"><swiper :indicator-dots="t ...
最新文章
- linux fcntl注销信号,fcntl · Linux C API 参考手册 · 看云
- 基于AgileEAS.NET SOA 平台SAAS架构技术的开源分销ERP系统-SmartERP.NET下载配置说明
- 线程和进程的对比之优缺点
- Windows 平台安装 MongoDB教程
- 解决TortoiseGit每次Pull或者Push都需要输用户名密码的问题
- php单字母函数(快捷方法)使用总结转载
- TFS 2010 使安装更容易,让VSS历史
- 神经网络激活函数的作用是什么?
- 伪装图片 攻击php,攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)...
- 妄想性仮想人格障害 汉化补丁(BUG修正)
- 2020-03-02
- chattr -i authorized_keys 无效
- ntp服务器安装和配置文件,NTP服务的安装、配置和使用
- vue全局混入minx
- 评估并改善模型的预测性能
- easypoi 语法_请问英语如何学习语法?
- python从零开始到精通_「Python 入门学习指南」0基础小白助你从入门到精通!
- 针对Could not find module libbanded5x.UGR6EUQPIWHQH7SL62IWIXB5545VDNQZ.gfortran-win_amd64.dll报错问题
- 哪种一致性哈希算法才是解决分布式缓存问题的王者?
- 关于springmvc项目一加入validation-api包就报错的解决方法