首页 > 代码库 > CALayer动画的暂停,恢复,以及结束时候的回调
CALayer动画的暂停,恢复,以及结束时候的回调
CALayer动画的暂停,恢复,以及结束时候的回调
源码如下:
//// ViewController.m// AnimationLineView//// Created by YouXianMing on 14/11/7.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "YXGCD.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // layer CALayer *layer = [CALayer layer]; layer.frame = CGRectMake(100, 100, 3, 3); layer.backgroundColor = [UIColor redColor].CGColor; layer.delegate = self; [self.view.layer addSublayer:layer]; // 动画 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"bounds"]; animation.fromValue = [NSValue valueWithCGRect:layer.frame]; animation.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 100, 3)]; animation.duration = 3.f; animation.delegate = self; // 设置代理 [layer addAnimation:animation forKey:@"YouXianMing"]; // 添加动画 // 暂停动画 [GCDQueue executeInMainQueue:^{ [self pauseLayer:layer]; } afterDelaySecs:1.5f]; // 恢复动画 [GCDQueue executeInMainQueue:^{ [self resumeLayer:layer]; } afterDelaySecs:3.f]; // 移除动画(根据key值) [GCDQueue executeInMainQueue:^{ [layer removeAnimationForKey:@"YouXianMing"]; } afterDelaySecs:3.5f];}/** * 动画确实停止了 * * @param anim CAAnimation对象 * @param flag 是否是正常的移除 */- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { NSLog(@"动画:%@ 是否动画中途被移除了:%d", anim, flag);}/** * 暂停 * * @param layer 被停止的layer */-(void)pauseLayer:(CALayer*)layer{ CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; layer.speed = 0.0; layer.timeOffset = pausedTime;}/** * 恢复 * * @param layer 被恢复的layer */-(void)resumeLayer:(CALayer*)layer{ CFTimeInterval pausedTime = [layer timeOffset]; layer.speed = 1.0; layer.timeOffset = 0.0; layer.beginTime = 0.0; CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; layer.beginTime = timeSincePause;}@end
以下是需要注意的地方:
CALayer动画的暂停,恢复,以及结束时候的回调
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。