关于动画暂停和恢复的简单说明
来源:互联网 发布:涂鸦制作软件 编辑:程序博客网 时间:2024/06/06 01:26
第一步的思路:判断动画是否存在 判断的依据是动画标识符translationAnimation
if ([_imgView.layeranimationForKey:@"translationAnimation"]) {
if (_imgView.layer.speed == 0) {
//开始 // 1. 让CALayer的时间继续行走
_imgView.layer.speed = 1;
CFTimeInterval pause = [_imgView.layertimeOffset];
_imgView.layer.timeOffset = 0;
// 4. 计算暂停的时间(这里也可以用CACurrentMediaTime()-pausedTime)
CFTimeInterval sinceTime = [_imgView.layerconvertTime:CACurrentMediaTime() fromLayer:nil] - pause;
// 5. 设置相对于父坐标系的开始时间(往后退timeSincePause)
_imgView.layer.beginTime = sinceTime - pause;
}else { //暂停
// 当前的时间 转为 图层暂停的时间
CFTimeInterval pauseTime = [_imgView.layerconvertTime:CACurrentMediaTime() fromLayer:nil];
_imgView.layer.speed = 0;
// 让CALayer的时间停留在pausedTime这个时刻
_imgView.layer.timeOffset = pauseTime;
}
如果没有动画的话 我们调用下面这个方法让动画开始
}else {
[self_startAnimation];
}
//开始动画的方法
- (void)_startAnimation {
//旋转
CABasicAnimation *anim = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.y"];
anim.toValue = @(M_PI);
//设置动画时间
anim.duration = 5;
//动画的次数 MAXFLOAT非常大的一个浮点型数字
anim.repeatCount = MAXFLOAT;
//设置代理
anim.delegate = self;
在这里我们设置了动画的标识符 方便我们在判断的时候可以根据这个标识符拿到动画
[_imgView.layer addAnimation:anim forKey:@"translationAnimation"];
}
- 关于动画暂停和恢复的简单说明
- 关于暂停和恢复
- OC和Swift中动画的暂停和恢复
- 如何暂停和恢复CALayer上的动画
- 如何暂停和恢复CALayer上的动画
- IOS 如何暂停和恢复CALayer上的动画
- 如何暂停和恢复CALayer上的动画
- 如何暂停和恢复CALayer上的动画
- 一个简单关于动画的暂停和开始操作的处理
- iOS动画的暂停与恢复
- -线程的暂停和恢复
- 属性动画 暂停 恢复
- WPF控制动画开始、停止、暂停和恢复
- WPF控制动画开始、停止、暂停和恢复
- 线程的暂停、恢复和终止
- 线程的暂停和恢复小例子
- iPhone中计时器的暂停和恢复
- 线程的暂停、恢复和终止
- Git Bash中 log输出乱码的问题/文末收集了有关的博文
- Chronometer
- Mybatis 入门之resultMap与resultType讲解实例
- 将centos7打造成桌面系统
- C++之内联函数inline
- 关于动画暂停和恢复的简单说明
- C++作业7
- VirtualBox Fedora 安装增强包和文件夹共享
- 用javah生成jni本地方法的头文件
- web 项目配置详解
- pv原语的定义及解释理解
- 《Eclipse.Rich.Client.Platform》4章 The Hyperbola Application
- 172. Factorial Trailing Zeroes [easy] (Python)
- 第十二周项目一(1)-实现复数类中的运算符重载