欢迎光临朱凯的个人博客!
朱凯,uewoman.com

帧动画控制-实现帧动画的开始、暂停、继续和停止功能

 发布时间: 2018-12-17 17:10      原创:  朱凯      评论: .       .人查看

题目:

// 向数组中添加图片、利用UIImageView完成帧动画功能; 实现动画的开始、停止功能; 通过CALayer实现帧动画的暂停和恢复暂停功能

iOS开发工程师 —— 北京智美方成网络科技有限公司(月薪 9K~11K )

核心代码:

//No.1
//开始写代码,用一组图片(01.jpg~22.jpg)实现逐帧动画, 要求: 动画开始前显示firstImage,动画持续3秒,不重复播放。
self.animationImageView.image = firstImage;
for(int i=1;i<=22;i++){
    UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"14030708-%02d.tiff",i]];
    [self.array addObject:img];
}
self.animationImageView.animationImages = self.array;
[self.animationImageView setAnimationDuration:3.0];
[self.animationImageView setAnimationRepeatCount:1];
//No.2
//开始写代码,完成 '播放动画' 按钮的点击事件,实现动画开关控制。即动画未播放时开始播放;正在播放时停止动画。
if ([self.animationImageView isAnimating]){
    [self.animationImageView stopAnimating];
    self.isStart = 0;
}else{
    self.isStart = 1;
    [self.animationImageView startAnimating];
}
//No.3
//开始写代码,填写判断动画的状态是暂停还是播放的判断条件
if (!self.isStart) {
//end_code
    [self resumeAnimationLayer:_animationImageView.layer];
    self.isStart = 1;
}else{
    [self pauseAnimationLayer:_animationImageView.layer];
    self.isStart = 0;
}
//No.4
//开始写代码,实现帧动画的暂停功能。
CFTimeInterval currentTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0;
layer.timeOffset = currentTime;
//No.5
//开始写代码,实现帧动画的恢复暂停功能。
CFTimeInterval pausedTime = layer.timeOffset;
layer.speed = 1;
layer.timeOffset = 0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime()- pausedTime fromLayer:nil];
layer.beginTime = timeSincePause;

demo 实例:  点击下载

密码: tqb8

分享是一种快乐,也是一种美德:
¥打开支付宝,扫码领红包¥ 红包

支付宝 aliPay

微信 wxPay