一个play方法实现全屏炫酷倒计时 - 续
2016-12-07 14:19
246 查看
上篇写了一篇实现全屏倒计时的demo,今天写的这篇是对上篇的扩展,还没看过上篇的这里是通道:一个play方法实现全屏炫酷倒计时的小demo
最近项目中用到的倒计时需求比以前更加酷炫一点,大概是这样的:
全屏动画效果
此功能是直接显示图片实现的,之前写的demo原理是用动画改变一个label的文字,现在要显示图片或者文字,我决定把这个label改成button,因为button中本身就有一个UILabel和UIImageView。
倒计时开始的时候只需要不断的给button上的ImageView赋值就可以了,因此我提供了一个新方法
此方法的核心代码部分在这里
解释一下:
每次调用这个方法,我会先判断下当前存放图片等数组里还有没有,如果有,直接调用UIButton的setImage:方法,给imageView赋值,然后执行UIView动画,每次UIView动画执行结束,把当前的图片从存放图片的数组里删除,然后重新调用此方法。如果发现数组里已经没有图片了,这时候证明倒计时已经结束,调用倒计时完成时的delegate和block即可。
最终效果图是这样:
酷炫的全屏动画效果
由于本篇是以上篇为基础的,所以再次建议大家不妨去看看一个play方法实现全屏炫酷倒计时的小demo,上篇讲的比较详细,这里我就不过多累述了!
文/杂雾无尘(简书作者)
原文链接:http://www.jianshu.com/p/129f00978658
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
最近项目中用到的倒计时需求比以前更加酷炫一点,大概是这样的:
全屏动画效果
此功能是直接显示图片实现的,之前写的demo原理是用动画改变一个label的文字,现在要显示图片或者文字,我决定把这个label改成button,因为button中本身就有一个UILabel和UIImageView。
倒计时开始的时候只需要不断的给button上的ImageView赋值就可以了,因此我提供了一个新方法
//** images : 存放所有的图片名称;begin : 倒计时开始回调;success : 倒计时完成回调;*/ + (instancetype)playWithImages:(NSArray *)images begin:(CountdownBeginBlock)begin success:(CountdownSuccessBlock)success;
此方法的核心代码部分在这里
if (button.images.count > 0) { isAnimationing = YES; [button setImage:[UIImage imageNamed:button.images.firstObject] forState:UIControlStateNormal]; [UIView animateWithDuration:1.0f animations:^{ button.transform = CGAffineTransformIdentity; button.alpha = 1; } completion:^(BOOL finished) { if (finished) { button.alpha = 0; button.transform = CGAffineTransformMakeScale(5, 5); if (button.images.count > 0) { [button.images removeObjectAtIndex:0]; [self scaleActionWithBeginBlock:button.countdownBeginBlock andSuccessBlock:button.countdownSuccessBlock button:button]; } } }]; } else { // 调用倒计时完成的代理和block if ([button.delegate respondsToSelector:@selector(countdownSuccess:)]) [button.delegate countdownSuccess:button]; if (button.countdownSuccessBlock) button.countdownSuccessBlock(button); [self hidden]; }
解释一下:
每次调用这个方法,我会先判断下当前存放图片等数组里还有没有,如果有,直接调用UIButton的setImage:方法,给imageView赋值,然后执行UIView动画,每次UIView动画执行结束,把当前的图片从存放图片的数组里删除,然后重新调用此方法。如果发现数组里已经没有图片了,这时候证明倒计时已经结束,调用倒计时完成时的delegate和block即可。
最终效果图是这样:
酷炫的全屏动画效果
由于本篇是以上篇为基础的,所以再次建议大家不妨去看看一个play方法实现全屏炫酷倒计时的小demo,上篇讲的比较详细,这里我就不过多累述了!
文/杂雾无尘(简书作者)
原文链接:http://www.jianshu.com/p/129f00978658
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- 全栈必备Linux 基础
- Spring MVC @ResponseBody返回中文字符串乱码问题
- 使用ListView控件展示数据
- android 中wpa_supplicant介绍
- centos中rabbitmq的安装及php支持
- git 拉取某个分支到本地
- 音频采样率与时间戳的计算
- Mysql性能调优笔记(第一部分)
- php的排序
- 将十进制数转化成八进制数
- anchorPoint与position有什么关系
- fsck命令使用详解及特别注意事项
- 一个play方法实现全屏炫酷倒计时的小demo
- 详解Asp.net Core 使用Redis存储Session
- Block 的使用
- Ubuntu 音效均衡器,网易云音乐均衡器插件
- Linux内核中的GPIO系统之(3):pin controller driver代码分析
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- 字符编码笔记:ASCII,Unicode和UTF-8(转)