CATransaction
区分隐式动画和隐式事务:隐式动画通过隐式事务实现动画 。
区分显式动画和显式事务:显式动画有多种实现方式,显式事务是一种实现显式动画的方式。
1.隐式事务
除显式事务外,任何对于CALayer属性的修改,都是隐式事务.这样的事务会在run-loop中被提交.
![](/assets/blank.gif)
- ( void)viewDidLoad {
// 初始化一个layer,添加到主视图
layer=[CALayer layer];
layer.bounds = CGRectMake( 0, 0, 200, 200);
layer.position = CGPointMake( 160, 250);
layer.backgroundColor = [UIColor redColor].CGColor;
layer.borderColor = [UIColor blackColor].CGColor;
layer.opacity = 1.0f;
[self.view.layer addSublayer:layer];
[super viewDidLoad];
}
-(IBAction)changeLayerProperty
{
// 设置变化动画过程是否显示,默认为YES不显示
[CATransaction setDisableActions:NO];
// 设置圆角
layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
// 设置透明度
layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;
}
![](/assets/blank.gif)
111
2. 显式事务
通过明确的调用begin,commit来提交动画
![](/assets/blank.gif)
修改执行时间
[CATransaction begin];
//显式事务默认开启动画效果,kCFBooleanTrue关闭
[CATransaction setValue:(id)kCFBooleanFalse
forKey:kCATransactionDisableActions];
//动画执行时间
[CATransaction setValue:[NSNumber numberWithFloat:5.0f] forKey:kCATransactionAnimationDuration];
//[CATransaction setAnimationDuration:[NSNumber numberWithFloat:5.0f]];
anotherLayer.cornerRadius = (anotherLayer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;
[CATransaction commit];
![](/assets/blank.gif)
![](/assets/blank.gif)
[CATransaction begin];
[CATransaction begin];
[CATransaction setDisableActions:YES];
layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
[CATransaction commit];
//上面的动画并不会立即执行,需要等最外层的commit
[NSThread sleepForTimeInterval:10];
//显式事务默认开启动画效果,kCFBooleanTrue关闭
[CATransaction setValue:(id)kCFBooleanFalse
forKey:kCATransactionDisableActions];
//动画执行时间
[CATransaction setValue:[NSNumber numberWithFloat:10.0f] forKey:kCATransactionAnimationDuration];
//[CATransaction setAnimationDuration:[NSNumber numberWithFloat:5.0f]];
anotherLayer.cornerRadius = (anotherLayer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
[CATransaction commit];
![](/assets/blank.gif)
CATransaction相关推荐
- CoreAnimation —— CATransaction(隐式动画)
2019独角兽企业重金招聘Python工程师标准>>> 当你改变`CALayer`的一个可做动画的属性,它并不能立刻在屏幕上体现出来.相反,它是从先前的值平滑过渡到新的值.这一切都是 ...
- [CATransaction flush] 作用详解
众所周知,CATransaction 是核心动画类中的事务类,负责将图层树的修改作为原子更新到渲染树.其分为隐式事务和显式事务.我们平时所做的针对layer层的操作都是隐式事务, 如self.view ...
- 微信跳一跳高分辅助踩坑
旧博文,搬到 csdn 原文:http://rebootcat.com/2018/01/08/wechat_jump_hack/ 最近挺火的微信跳一跳 最近新版微信的『跳一跳』小程序着实火了一把,也把 ...
- iOS开发系列--让你的应用“动”起来
概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...
- IOS 自定义相机, 使用 AVFoundation(附实现部分腾讯水印相机功能 demo)
原文链接:http://www.jianshu.com/p/c64bf543f16a 这是一款使用 AVFoundation 自定义的相机,与系统原生相机有一样的外观但比系统的相机更好.更符合实际的开 ...
- iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现
原文链接:http://www.jianshu.com/p/7221bc08f26a SKAutoScrollLabel 是一个同时支持水平 / 垂直两种类型的 "跑马灯" 效果的 ...
- 多个CALayer的联动
在如何通过手势捕获CALayer基础上做了个示例,两个CALayer的联动,当拖动左侧的Layer的时候,右侧的Layer随动.因为右侧的动画没有关闭,有延迟,产生随动的效果.如果不想延迟,可参考拖动 ...
- iOS学习——核心动画之Layer基础
iOS学习--核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
- iOS:CALayer核心动画层
CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...
最新文章
- jquery 同一个页面处理多个ajax请求
- BZOJ3048: [Usaco2013 Jan]Cow Lineup
- 交换机网络嗅探方法之用ARP欺骗辅助嗅探
- POJ3585-Accumulation Degree【树形dp,二次扫描与换根法】
- facebook, twitter,QQ, google +1, linkedin, disqus,gigya 按钮Network (登录)
- comboBox绑定对象数组 c# 1614065159
- 怎么做装修预算?装修预算需要注意的三大事项
- 循环嵌套外小内大原则
- vsftpd虚拟用户与匿名用户配合使用
- 安装Veritas Backup Exec v20.3
- mysql触发器 实例_mysql触发器的三个例子
- 计算机化学的dft的意义,第四章 密度泛函理论(DFT) 4.1 引言 4.2 DFT的优点 4.3 Hohenberg-Kohn定理 4.4 能量泛函公式...
- GMP编译make check时出现FAIL t-scan
- Windows 10 企业版LTSCjihuo
- windows系统下更改itunes默认备份地址(小白实操)
- 浅谈贝叶斯和MCMC
- 博客平台遭虚假勒索攻击、新黑客组织称对以色列的攻击负责|11月16日全球网络安全热点
- 面试题:给定一个数组,数组中只包含0和1。请找到一个最长的子序列,其中0和1的数量是相同的
- ANDROID_MARS学习笔记_S04_004_用HTTPCLENT发带参数的get和post请求
- python repr
热门文章
- rn在java中什么意思_[React Native Android 安利系列]RN中使用js调用java代码
- 搭建注册中心Consul集群
- python软件下载安装教程,python下载安装教程
- 区块链司法白皮书重磅发布!
- EasyExcel设置特定单个单元格(颜色)样式
- Python scikit-learn 学习笔记—鸢尾花模型
- 【附源码】计算机毕业设计java音蕾心动设计与实现
- JavaScript基础案例+代码
- openstack基础之python WSGI,paste,Routes,webob
- PL/SQL删除锁表的进程