这里主要讲的是使用CoreAnimate实现所需的动画。
简介一些,可以设置layer的移动,大小,三维位置,透明度,圆角,背景颜色。ios和osx的是不一样的,官网的只是简介,没有太多实际的例子。
 
关键词: UIView Animation, QuartzCore, CAAnimation, UIBezierPath, CGAXXX, CADisplayLink, UIKit Dynamic(UIDynamics, UISnapBehavior), CAEmitter, pop
 
关于UIKit中的Dynamic,其实就是加入了一个简化版的2D动画引擎到APP应用中。也没有什么好介绍的,网上可以轻易的找到很多例子教程。无非就是重力,碰撞,震动等物理特性进行封装,不具有随机性,用法也非常简单。是独立开来的另外一个引擎框架。
 
pop库,facebook的开源动画引擎,据说效率更高,没有测试过,不误导,直接上链接:https://github.com/facebook/pop
 
再讨论Core Animation类体系图:
 
CAEmitter ???自带的粒子发射效果,做一个火焰?雾气?好像也没用上的机会。网上也是好多demo,很容易找.
 
QuartzCore其实是Core Animation的框架名字。而Core Animation是框架中的一等公民,位于media层,我们使用的CALayer就是来自于Quartz框架的,系统进行了大量的封装,各种图形,供各位开发者进行快速开发。而不是使用OpenGL ES这里更加底层的东西。这里毕竟不是游戏开发,只是app,学习成本不会太高。
 
其实大多数情况下,CAAnimation是能满足需求的。就是重绘,刷新视图,或者使用贝赛尔曲线直接绘制各种图形。(UIBezierPath)
实际应用例子:http://kittenyang.com/drawablebubble/   qq的消息气泡。原理:不断的响应势点击事件,利用贝塞尔曲线不断的重绘图形。还有其他的简洁的例子,在很多网站上都能快速的查阅到。
这里顺带提一下:CADisplayLink的作用原理,就是加入一个函数到进程的runloop中,每次runloop执行的话会执行这个sel,可以设置频率。注意一点,既然是系统的runloop,那么就要慎用了,如果加了很多操作?软件肯定会卡死的,慎用。
 
而事实上,我自己在开发的时候,用的最多的是自带的View Animation,非常简洁大方的代码。自带的spring函数,使用也非常简单。
我常使用于各种视图切换,以及各种按钮移动动画效果。
 
其实也很少有app用到很多动画的,用得好的话能让app应用变得高级很多,体验效果非常不一样。例如,最近很多人用的格拉瓦电影app,里边的一些效果就做得非常好,例如电影介绍页面,自定义的视图切换,选购按钮设计,不卡的tableView(圆形按钮等各种优化处理,可以通过xcode自带的core animate测试工具看出来),很用心的应用。但是,还是觉得有点乱乱的。动画还是多了点。使得整个app看起来,不够简洁,干净。(对比市场上大多数的app)。顺带说一下,那种图片的动画,一般就是截图+size+pos+bezierpath 进行处理的,都不麻烦的。
 
说到这儿,app的动画也讲完了,其实内容也不多。摘录上一篇CoreAnimation中推荐的一本书的语句:动画只是CoreAnimate的一小部分而已。   真的是实在话。
 

iOS CoreAnimate 动画实现的更多相关文章

  1. iOS CoreAnimate

    iOS CoreAnimate 东西比较多,这篇笔记是入门用的,主要讲述的是静态的图形绘画处理问题.(当然动画也只是一小部分)理解相关的概念问题:   参考资料 http://segmentfault ...

  2. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  3. IOS 核心动画之CAKeyframeAnimation - iBaby

    - IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation ...

  4. iOS各种动画效果

    ios各种动画效果 最普通动画: //开始动画 [UIView beginAnimations:nil context:nil];  //设定动画持续时间 [UIView setAnimationDu ...

  5. IOS之动画

    IOS之动画   15.1 动画介绍 15.2 Core Animation基础 15.3 隐式动画 15.4 显式动画 15.5 关键帧显式动画 15.6 UIView级别动画 15.1 动画介绍 ...

  6. IOS 动画专题 --iOS核心动画

    iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...

  7. ios 学习动画的套路 (一)

    你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟~不知道从哪里下手去写!会连续的 ...

  8. Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画

    转自:https://www.cnblogs.com/zamhown/p/6688369.html 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画 ...

  9. 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画

    前段时间听部门老大说,Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形 ...

随机推荐

  1. 「LINUX资料」Samba服务器(二)

  2. $.map和$.extend来复制数组(OA差旅)

    $.map:对数组的每个元素调用定义的回调函数并返回包含结果的数组. 对数组用指定的方法. //将原数组中每个元素加 4 转换为一个新数组. //jQuery 代码: $.map( [0,1,2], ...

  3. 微信上传文章素材—ASP.NET MVC从View层传数据到Controller层

    View层: $('#btnNews').click(function() { if (!confirm('确定要提交吗?')) { return; } var frontViewData = []; ...

  4. 浅入浅出EmguCv(三)EmguCv打开指定视频

    打开视频的思路跟打开图片的思路是一样的,只不过视频是由一帧帧图片组成,因此,打开视频的处理程序有一个连续的获取图片并逐帧显示的处理过程.GUI同<浅入浅出EmguCv(二)EmguCv打开指定图 ...

  5. ssh 发现了error while loading shared libraries这种错

    在Linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了: ./tests: error whil ...

  6. 基于服务(Web Service)的文件管理Winform客户端实现(二)

    上一篇主要介绍文件管理服务有哪些方法,实现了哪些功能. 基于服务(Web Service)的文件管理Winform客户端实现(一) 本篇将根据文件服务服务实现Winform客户端设计.开发. 3.   ...

  7. ruby中 Win32ole的各应用操作方法(word excel Outlook IE)

    Win32ole为标准Ruby发行版的一部分.Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互.具体说来Win32ole可以操作Word,Excel,IE, ...

  8. 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能

    下期预告: 由于很多园友反馈,有的组件不应该缺席.测试复杂度不够.测试还缺乏一定的公平. 因此考虑在下一个版本中,确保在更加公平的前提下进行更高复杂度的测试 . 同时将分为2组测试,纯SQL组件及纯O ...

  9. [Mongodb] Tarball二进制包安装过程

    一.缘由: 用在线安装的方式安装mongodb,诚然很方便.但文件过于分散,如果在单机多实例的情况下,就不方便管理. 对于数据库的管理,我习惯将所有数据(配置)文件放在一个地方,方便查找区分. 二.解 ...

  10. git服务器新增仓库

    在已有的git库中搭建新的库,并将本地的git仓库,上传到服务器的git库中,从而开始一个新的项目. 首先是在本地操作: 在本地新建文件夹spider,进入到spider中:如下