iOS核心动画之CALayer-隐式动画
- 一、隐式动画属性
- 二、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-隐式动画相关推荐
- IOS开发CALayer隐式动画
2019独角兽企业重金招聘Python工程师标准>>> 每一个自定义的layer都存在默认的隐私动画,隐式动画默认为1/4秒 @interface DYViewController ...
- Flutter 动画全解析(动画四要素、动画组件、隐式动画组件原理等)
本文通过拆解 Flutter 中动画的实现方式以及原理来介绍动画实现的整个过程. 1. 动画四要素 动画在各个平台的实现原理都基本相同,是在一段时间内一系列连续变化画面的帧构成的.在 Flutter ...
- iOS边练边学--CALayer,非根层隐式动画,钟表练习
一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性 ...
- 三 iOS之 CALayer的隐式动画
隐式动画 什么是图层的隐式动画? 当我们修改CALayer的一些属性,我们可以发现它会有类似动画效果一样的变化,这是图层独有的特性. 这样的特性UIView是没有的,当修改UIView的图层属性,会是 ...
- CALayer的使用(圆形头像 锚点 边框 阴影 形变 隐式动画 )
CALayer简介和一些基本概念: 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView.其实UIView之所以能显 ...
- CoreAnimation —— CATransaction(隐式动画)
2019独角兽企业重金招聘Python工程师标准>>> 当你改变`CALayer`的一个可做动画的属性,它并不能立刻在屏幕上体现出来.相反,它是从先前的值平滑过渡到新的值.这一切都是 ...
- iOS动画进阶(八)显式动画
显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...
- 动画总结 Core Animation 贝赛尔曲线 显式动画 隐式动画
Core Animation 接下来详细介绍下动画的各个属性及作用 fromValue: 动画的开始值(Any类型, 根据动画不同可以是CGPoint.NSNumber等) toValue: 动画的结 ...
- flutter 隐式动画
前言 隐式动画简单来说就是用 setState 就能呼唤出来的动画.对于实现了隐式动画的组件,只要Widget被更新,那么一个过渡动画就会自动产生并且播放. 隐式动画和显示动画的区别? 1,隐式动画是 ...
- PPT动画教程:字幕式动画
转载者: 免费ppt模板下载 来源: www.2ppt.cn 今天我们用动画的形式介绍在Powerpoint演示文稿中设置字幕式动画的方法和技巧. 我们经常看到一些课件在播放 ...
最新文章
- HTML5新元素section和article的区别详解
- VMware Fusion指定虚拟机IP
- JavaSE学习笔记(二十九)—— 其它流
- 《梦断代码》阅读笔记之第8章至最后
- SQL Server中的KILL SPID命令
- resnet50代码_13、SOTA论文实践-学习ResNet(80行代码搞定残差backbone网络)
- NLG ≠ 机器写作 | 专家专栏
- Linux下使用fdisk扩大分区容量
- NLP学习—20.WMD paper及代码
- 超标量、超流水、超线程
- 腾讯云人脸支付常见问题和解答,以及腾讯云人脸支付相关介绍
- Android应用程序四大组件分别是什么?各个组件所起到的作用是什么?
- 今日头条推荐算法原理全文详解之三
- PDF、WORD文档快速翻译成中文的方法,帮你一键搞定!
- (1170, BLOB/TEXT column 'description' used in key specification without a key length)
- c语言常用延时程序,新手常用单片机延时程序
- Android 开发都有哪些好书值得一读?
- 【ERROR】java java.lang.NoClassDefFoundError 的解决办法(全)
- windows下枚举串口的方法,超好用,跟设备管理器枚举一样
- MobaXterm批量导入sessions
热门文章
- 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
- [蓝桥杯][算法训练VIP]方格取数(双线程dp)
- JOE is on TV! CodeForces - 1293B(数学)
- 上传到服务器gd不支持,安装dedecms出现GD不支持。我的php5.5的。怎么解决?
- python电子病历数据挖掘_数据挖掘技术在基于XML的电子病历中的应用研究
- Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算
- python强类型_python动态性强类型用法实例
- 深度学习资料汇总(满满的干货)
- Lua中的模块和使用
- nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目