• iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
  • 一、引言
  • 二、初识CoreAnimation
  • 三、锚点对几何属性的影响
  • 四、Layer与View之间的关系

iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程

一、引言

众所周知,绚丽动画效果是iOS系统的一大特点,通过UIView层封装的动画,基本已经可以满足我们应用开发的所有需求,但若需要更加自由的控制动画的展示,我们就需要使用CoreAnimation框架中的一些类与方法。这里先附上前几篇与动画相关的博客地址,这一系列,我们抽出其中的CoreAnimation框架来详细解读。

UIViewAnimation动画的使用:http://my.oschina.net/u/2340880/blog/484457

UIView动画执行的另一种方式:http://my.oschina.net/u/2340880/blog/484538

UIView转场动画:http://my.oschina.net/u/2340880/blog/484669

CoreAnimation隐式动画的应用:http://my.oschina.net/u/2340880/blog/484793

粒子效果的使用:http://my.oschina.net/u/2340880/blog/485095

二、初识CoreAnimation

CoreAnimation框架是基于OpenGL与CoreGraphics图像处理框架的一个跨平台的动画框架。简单来说,它使帮助我们将图像读取成位图,通过硬件的处理,实现动画效果。文档中的一张图片十分形象的描述了CoreAnimation与UIKit框架的关系:

在CoreAnimation中,大部分的动画效果都是通过Layer层来实现的,通过CALayer,我们可以组织复杂的层级结构。

在CoreAnimation中,大多数的动画效果是添加在图层属性的变化上,例如,改变图层的位置,大小,颜色,圆角半径等。Layer层并不决定视图的展现,它只是存储了视图的几何属性状态。

三、锚点对几何属性的影响

关于Layer层,我们需要了解一个有关锚点的概念,锚点决定了图层的绘制位置以及动画展示时其参照的点,锚点的取值范围为0-1,锚点有两个地方在应用中会有很大影响:

1.layer层的position参照点始终和锚点重合

通过position决定了layer所在的位置,在Layer中,虽然也有frame这样的属性,但我们很少使用,一般我们会使用bounds和position确定Layer层的大小和位置。

2.锚点决定进行动作的参照点

例如一个旋转动作,锚点决定了层旋转的中心点,对于放大缩小的动作,锚点决定了放大或者缩小参照的中心点。

可以来看下边一组图:

上面两个矩形,frame和bounds都是一样的,第一个矩形的锚点位置为(0.5,0.5),第二个为(0,0),

因此,两个矩形的position点是不同的,第一个是(100,100),第二个是(40,60)。再看当产生动作时锚点的影响:

现在就很好理解了,锚点的不同直接影响了动作产生的参照点。

通过CALayer的如下属性,我们可以设置锚点,注意x,y的取值范围都是0~1,代表所占宽度和高度的比例:

?
1
@property CGPoint anchorPoint;

四、Layer与View之间的关系

Layer是专门用于辅助我们绘制图像的层,它使支持三维坐标系的绘制的,通过每个坐标点与转换矩阵的运算,来决定最后绘制的状态,并且,Layer可以更高帧率的绘制动画效果。然而Layer与View依然有很大不同,首先,我们不可能只通过Layer来开发应用程序,Layer并没有接收事件和处理用户交互的能力,这些依然需要View来完成,每一个View中,都有一个Layer的属性来辅助进行图形的绘制。并且Layer是可以层级嵌套的,开发中,我们可以根据需求灵活选择。

转载于:https://www.cnblogs.com/Free-Thinker/p/5117622.html

iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程相关推荐

  1. ios开发——使用CALayer和Core Animation做动画效果

    一. CALayer (一). CALayer简介 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView,其实UIV ...

  2. 猫猫学IOS(四十)UI之核心动画_抖动效果_CAKeyframeAnimation

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 效果一: 效果二: ...

  3. (0030) iOS 开发之跳转之转场动画

    demo: 1 iOS  ~ ViewController的Push,Pop和Present,Dismiss转场动画 // http://blog.csdn.net/zhangao0086/artic ...

  4. 【iOS开发-45】Tom猫案例:动画、imageNamed与imageWithContentOfFile对内存影响、图片文件夹放哪儿以及文档注释

    今天tom猫案例效果: (1)最傻最笨的办法: --所有的点击都是按钮,只不过有6个有图标的按钮,有些头部.左右脚.肚子.尾巴那块也是一个按钮,只不过没背景没文字没边框的按钮用户按不到而已. --这里 ...

  5. iOS资源帖-优秀博客、iOS开发技术文、学习网站

    原链接:https://www.jianshu.com/p/619c61d9c8fb 一些博客 王巍 Objc中国发起人.Line工程师 ibireme YYKit作者 bang JSPatch作者 ...

  6. IOS 开发-- 常用-- 核心代码

    网络请求 (包含block 和 delegate) 数据持久化技术 手势处理' XML数据解析 多线程实现 核心动画编程 地图定位功能 CoreData数据持久化技术 本地通知和推送通知 常用宏定义 ...

  7. 《iOS开发实战 从入门到上架App Store(第2版)》书籍目录

    第1章 开发准备 1.1 iOS 10新特性简述 1.1.1 新增触觉反馈编程接口 1.1.2 SiriKit框架的开放 1.1.3 引入Messages App 1.1.4 通知框架的整合与扩展 1 ...

  8. C++转iOS开发5个月总结

    啰嗦 8月5号左右突然做出了来北京工作的决定,给北京同学了解情况时正好同学公司缺人,7号来面试了下,13号一早就来报到了.自己与iOS开发还是有些缘分,3月中旬到5月初在济南一家小公司做了不到2个月的 ...

  9. 5个月iOS开发入门总结(C++转行iOS)

    前言:一个人写的ios转行总结,思路很清晰,值得学习 原文网址:http://www.cocoachina.com/bbs/read.php?tid-332587.html 啰嗦(请跳过) 8月5号左 ...

最新文章

  1. 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
  2. 正则表达式基本语法详解
  3. 顺序表应用4:元素位置互换之逆置算法
  4. 将windows 客户机加入msits.com域环境中
  5. https://cwiki.apache.org/confluence/display/FLINK/FLIP-24+-+SQL+Client
  6. [css] 怎么使用css选择空链接?
  7. linux用户组chownd,Linux系统centos6下用户与用户组权限命令用法 chmod与chown
  8. Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(二)
  9. CSS3 变换/变形(transform)
  10. Struts,Hibernate,Spring经典面试题收藏(转)
  11. C++基础知识(五)C++的一些特性
  12. 一步步教你优化Delphi字串查找(转载)
  13. 蓝桥杯 算法提高 全排列 next_pertumutation
  14. 怎么完全卸载赛门铁克_对顽固程序说不!杀毒软件Symantec赛门铁克清除记
  15. 解决FTP服务器FileZilla server中文乱码问题
  16. 教你看懂MOSFET数据手册
  17. Google Admob 广告快速集成(并集成Firebase统计)
  18. zcmu--1042: 二哥的困惑 Ⅴ
  19. PyQt5 QtChart-折线图
  20. magento系统自带批量小结

热门文章

  1. VMWare CentOS6.x克隆方法
  2. Scala代码案例:100以内的数求和,求出当和第一次大于20的当前数(循环中断机制)
  3. 【视频】vue $watch监控数据的变化
  4. MySQL优化排名语句
  5. 通过ClassLoader加载硬盘上的图片到内存及ImageIO的使用
  6. linux下将只读文件改为可读可写
  7. 计算机造句英语怎么说,计算的英文翻译是什么及如何造句
  8. 幼儿课外活动游戏_幼儿园的户外活动游戏有哪些?
  9. FreeRTOS 低功耗之 tickless 模式
  10. 计算机丢失wininet,win7系统启动程序提示因为计算机中丢失wininet.dll的解决方法...