iOSCABasicAnimation的创建、停止和恢复
来源:互联网 发布:nba哪只球队好看 知乎 编辑:程序博客网 时间:2024/05/22 20:27
#pragma mark - 当前视图被触摸
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//1.判断myView.layer上是否添加了动画
CAAnimation *animation = [myView.layeranimationForKey:@"rotationAnimation"];
if (animation) {
//2.判断是否暂停、恢复
if (myView.layer.speed ==0) {
//恢复动画
[selfresumeAnimation];
}else {
//暂停动画
[selfpauseAnimation];
}
}else {
[selfrotationAnimation];
}
}
#pragma mark - 动画效果
//暂停动画
- (void)pauseAnimation {
//(0-5)
//开始时间:0
// myView.layer.beginTime
//1.取出当前时间,转成动画暂停的时间
CFTimeInterval pauseTime = [myView.layerconvertTime:CACurrentMediaTime()fromLayer:nil];
//2.设置动画的时间偏移量,指定时间偏移量的目的是让动画定格在该时间点的位置
myView.layer.timeOffset = pauseTime;
//3.将动画的运行速度设置为0,默认的运行速度是1.0
myView.layer.speed =0;
}
//恢复动画
- (void)resumeAnimation {
//1.将动画的时间偏移量作为暂停的时间点
CFTimeInterval pauseTime =myView.layer.timeOffset;
//2.计算出开始时间
CFTimeInterval begin = CACurrentMediaTime() - pauseTime;
[myView.layersetTimeOffset:0];
[myView.layersetBeginTime:begin];
myView.layer.speed =1;
}
//CABasicAnimation 实现旋转动画
- (void)rotationAnimation {
//1.创建动画对象
//默认是按Z轴旋转
CABasicAnimation *basic = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
//2.设置动画属性
[basicsetToValue:@(2*M_PI)]; //2*M_PI 旋转一周
[basicsetDuration:0.5f];
//动画完成后,是否从CALayer上移除动画对象
// [basic setRemovedOnCompletion:YES];
//设置重复次数,HUGE_VALF是一个非常大的浮点数
[basicsetRepeatCount:HUGE_VALF];
//动画根据锚点旋转的
//修改锚点
[myView.layersetAnchorPoint:CGPointMake(0,0)];
//3.添加动画
[myView.layeraddAnimation:basicforKey:@"rotationAnimation"];
}
//CABasicAnimation 实现缩放动画
- (void)scaleAnimation {
//1.创建动画对象
CABasicAnimation *basic = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
//2.设置动画的属性
//fromValue 、toValue
[basicsetFromValue:@1];
[basicsetToValue:@2];
//设置动画的时长
[basicsetDuration:0.6f];
//是否自动恢复原始
// [basic setAutoreverses:YES];
basic.removedOnCompletion =NO;
basic.fillMode =kCAFillModeForwards;
//3.将动画添加到CALayer
[myView.layeraddAnimation:basic forKey:nil];
}
- iOSCABasicAnimation的创建、停止和恢复
- Layer动画的停止和恢复
- java线程停止、暂停和恢复等状态的控制
- 【JAVA】挂起、恢复和停止线程的示例代码
- java线程停止、暂停和恢复等状态的控制
- 线程的创建-停止
- RMAN恢复目录的创建和维护
- 任务的创建、挂起和恢复
- [Android] 停止、恢复 背景音乐的播放
- Layer动画的停止与恢复
- 不停止主数据库操作,只操作从数据库,实现快速恢复的方法和局限性
- 【linux驱动分析】之dm9000驱动分析(七):dm9000的卸载挂起和恢复以及打开和停止
- JAVA多线程机制之暂停、恢复和停止
- WPF控制动画开始、停止、暂停和恢复
- WPF控制动画开始、停止、暂停和恢复
- android重新创建Activity时状态的保存和恢复
- 关于DB2恢复时候不能停止前滚的问题
- STM32停止模式唤醒不恢复时钟的后果
- 写给喜欢用Block的朋友(ios Block)
- UIControl_收起键盘的几种方式
- Tomcat装载Servlet的三种情况
- cocos2dx3.2技术之新字体标签Label浅析
- 排序稳定性
- iOSCABasicAnimation的创建、停止和恢复
- 关于Fragment(XXFragment) not attached to Activity 异常
- Color android
- 二叉树公共祖先节点的查找
- 黑马程序员-【多线程】
- opencv BackgroundSubtractorMOG和BackgroundSubtractorMOG2的区别
- servlet笔记(五)响应头信息
- 华为机试-姓名夫妻相
- 欢迎使用CSDN-markdown编辑器