本文目录

  • 一、隐式动画属性
  • 二、position和anchorPoint
回到顶部

一、隐式动画属性

* 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)。所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画。

* 当对非Root Layer的部分属性进行相应的修改时,默认会自动产生一些动画效果,这些属性称为Animatable Properties(可动画属性)。

* 列举几个常见的Animatable Properties:

  • bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画
  • backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画
  • position:用于设置CALayer的位置。修改这个属性会产生平移动画

比如:假设一开始CALayer的position为(100, 100),然后在某个时刻修改为(200, 200),那么整个CALayer就会在短时间内从(100, 100)这个位置平移到(200, 200)

* 我们也可以从官方文档中查询所有的Animatable Properties

1.点击Window -> Organizer

2.在搜索框输入"animatable"即可

回到顶部

二、position和anchorPoint

* position和anchorPoint属性都是CGPoint类型的

* position可以用来设置CALayer在父层中的位置,它是以父层的左上角为坐标原点(0, 0)

* anchorPoint称为"定位点",它决定着CALayer身上的哪个点会在position属性所指的位置。它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

1.创建一个CALayer,添加到控制器的view的layer中

 1 CALayer *myLayer = [CALayer layer];
 2 // 设置层的宽度和高度(100x100)
 3 myLayer.bounds = CGRectMake(0, 0, 100, 100);
 4 // 设置层的位置
 5 myLayer.position = CGPointMake(100, 100);
 6 // 设置层的背景颜色:红色
 7 myLayer.backgroundColor = [UIColor redColor].CGColor;
 8
 9 // 添加myLayer到控制器的view的layer中
10 [self.view.layer addSublayer:myLayer];

第5行设置了myLayer的position为(100, 100),又因为anchorPoint默认是(0.5, 0.5),所以最后的效果是:myLayer的中点会在父层的(100, 100)位置

注意,蓝色线是我自己加上去的,方便大家理解,并不是默认的显示效果。两条蓝色线的宽度均为100。

2.若将anchorPoint改为(0, 0),myLayer的左上角会在(100, 100)位置

1 myLayer.anchorPoint = CGPointMake(0, 0);

3.若将anchorPoint改为(1, 1),myLayer的右下角会在(100, 100)位置

1 myLayer.anchorPoint = CGPointMake(1, 1);

4.将anchorPoint改为(0, 1),myLayer的左下角会在(100, 100)位置

1 myLayer.anchorPoint = CGPointMake(0, 1);

我想,你应该已经明白anchorPoint的用途了吧,它决定着CALayer身上的哪个点会在position所指定的位置上。它的x、y取值范围都是0~1,默认值为(0.5, 0.5),因此,默认情况下,CALayer的中点会在position所指定的位置上。当anchorPoint为其他值时,以此类推。

iOS核心动画之CALayer-隐式动画相关推荐

  1. IOS开发CALayer隐式动画

    2019独角兽企业重金招聘Python工程师标准>>> 每一个自定义的layer都存在默认的隐私动画,隐式动画默认为1/4秒 @interface DYViewController ...

  2. Flutter 动画全解析(动画四要素、动画组件、隐式动画组件原理等)

    本文通过拆解 Flutter 中动画的实现方式以及原理来介绍动画实现的整个过程. 1. 动画四要素 动画在各个平台的实现原理都基本相同,是在一段时间内一系列连续变化画面的帧构成的.在 Flutter ...

  3. iOS边练边学--CALayer,非根层隐式动画,钟表练习

    一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性 ...

  4. 三 iOS之 CALayer的隐式动画

    隐式动画 什么是图层的隐式动画? 当我们修改CALayer的一些属性,我们可以发现它会有类似动画效果一样的变化,这是图层独有的特性. 这样的特性UIView是没有的,当修改UIView的图层属性,会是 ...

  5. CALayer的使用(圆形头像 锚点 边框 阴影 形变 隐式动画 )

    CALayer简介和一些基本概念: 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView.其实UIView之所以能显 ...

  6. CoreAnimation —— CATransaction(隐式动画)

    2019独角兽企业重金招聘Python工程师标准>>> 当你改变`CALayer`的一个可做动画的属性,它并不能立刻在屏幕上体现出来.相反,它是从先前的值平滑过渡到新的值.这一切都是 ...

  7. iOS动画进阶(八)显式动画

    显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...

  8. 动画总结 Core Animation 贝赛尔曲线 显式动画 隐式动画

    Core Animation 接下来详细介绍下动画的各个属性及作用 fromValue: 动画的开始值(Any类型, 根据动画不同可以是CGPoint.NSNumber等) toValue: 动画的结 ...

  9. flutter 隐式动画

    前言 隐式动画简单来说就是用 setState 就能呼唤出来的动画.对于实现了隐式动画的组件,只要Widget被更新,那么一个过渡动画就会自动产生并且播放. 隐式动画和显示动画的区别? 1,隐式动画是 ...

  10. PPT动画教程:字幕式动画

    转载者: 免费ppt模板下载              来源: www.2ppt.cn 今天我们用动画的形式介绍在Powerpoint演示文稿中设置字幕式动画的方法和技巧. 我们经常看到一些课件在播放 ...

最新文章

  1. HTML5新元素section和article的区别详解
  2. VMware Fusion指定虚拟机IP
  3. JavaSE学习笔记(二十九)—— 其它流
  4. 《梦断代码》阅读笔记之第8章至最后
  5. SQL Server中的KILL SPID命令
  6. resnet50代码_13、SOTA论文实践-学习ResNet(80行代码搞定残差backbone网络)
  7. NLG ≠ 机器写作 | 专家专栏
  8. Linux下使用fdisk扩大分区容量
  9. NLP学习—20.WMD paper及代码
  10. 超标量、超流水、超线程
  11. 腾讯云人脸支付常见问题和解答,以及腾讯云人脸支付相关介绍
  12. Android应用程序四大组件分别是什么?各个组件所起到的作用是什么?
  13. 今日头条推荐算法原理全文详解之三
  14. PDF、WORD文档快速翻译成中文的方法,帮你一键搞定!
  15. (1170, BLOB/TEXT column 'description' used in key specification without a key length)
  16. c语言常用延时程序,新手常用单片机延时程序
  17. Android 开发都有哪些好书值得一读?
  18. 【ERROR】java java.lang.NoClassDefFoundError 的解决办法(全)
  19. windows下枚举串口的方法,超好用,跟设备管理器枚举一样
  20. MobaXterm批量导入sessions

热门文章

  1. 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
  2. [蓝桥杯][算法训练VIP]方格取数(双线程dp)
  3. JOE is on TV! CodeForces - 1293B(数学)
  4. 上传到服务器gd不支持,安装dedecms出现GD不支持。我的php5.5的。怎么解决?
  5. python电子病历数据挖掘_数据挖掘技术在基于XML的电子病历中的应用研究
  6. Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算
  7. python强类型_python动态性强类型用法实例
  8. 深度学习资料汇总(满满的干货)
  9. Lua中的模块和使用
  10. nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目