实现loading动画效果
下面我就来罗列三种实现loading动画效果的方法。
方法一:使用UIImageView自带的方法来实现,这也是我推荐的实现方法。
- NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"],[UIImage imageNamed:@"4.png"],[UIImage imageNamed:@"5.png"], nil nil];
- UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 80, 30)];
- imageView.animationImages = array; //动画图片数组
- imageView.animationDuration = 2; //执行一次完整动画所需的时长
- // gifImageView.animationRepeatCount = 0; //动画重复次数 0表示无限次,默认为0
- [imageView startAnimating];
- [self.view addSubview:imageView];
方法二:使用UIImageView+NSTimer(定时器)来实现,如果没有猜错的话,第一种方式内部的实现方法也是使用了定时器,只不过我们第二种方法是自己DIY一个属于自己的
控件,自己想要扩展什么功能就扩展什么。
- #import <UIKit/UIKit.h>
- @interface imageAnimation : UIImageView
- @property (strong, nonatomic) NSTimer *animation_timer;
- @property (strong, nonatomic) NSMutableArray *imageArray;
- @property (assign) int currentIndex;
- @property (assign) float interval;
- - (void)startLoading;
- - (void)stopLoading;
- - (void)initLoadingView:(NSMutableArray *)imageArray timeInterval:(float)time;
- @end
- #import "imageAnimation.h"
- @implementation imageAnimation
- @synthesize animation_timer = _animation_timer;
- @synthesize imageArray = _imageArray;
- @synthesize currentIndex = _currentIndex;
- @synthesize interval = _interval;
- - (id)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
- // Initialization code
- }
- return self;
- }
- /*
- // Only override drawRect: if you perform custom drawing.
- // An empty implementation adversely affects performance during animation.
- - (void)drawRect:(CGRect)rect
- {
- // Drawing code
- }
- */
- - (void)initLoadingView:(NSMutableArray *)imageArray timeInterval:(float)time{
- self.imageArray = imageArray;
- self.interval = time;
- self.animation_timer = [NSTimer scheduledTimerWithTimeInterval:self.interval target:self selector:@selector(startLoading) userInfo:nil repeats:YES];
- }
- //开始loading
- - (void)startLoading{
- if(!self.imageArray || self.imageArray.count < 1){
- [self.animation_timer invalidate];
- return;
- }
- self.currentIndex = (self.currentIndex +1)%self.imageArray.count;
- self.image = [UIImage imageNamed:[self.imageArray objectAtIndex:self.currentIndex]];
- }
- //结束loading
- -(void)stopLoading{
- [self.animation_timer invalidate];
- }
- @end
方法三:使用UIWebView来加载gif图片,除非你要用到webView,不然就不要使用这种方式来实现
- NSData *gif = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"1" ofType:@"gif"]];
- // view生成
- UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(100, 100, 70, 30)];
- webView.userInteractionEnabled = NO;//用户不可交互
- [webView loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
- [self.view addSubview:webView];
实现loading动画效果的更多相关文章
- ios开发之简单实现loading动画效果
最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loadi ...
- Atitit Loading 动画效果
Atitit Loading 动画效果 使用才场景,加载数据,以及显示警告灯.. 要有手动关闭按钮 <div class="spinner loading_part" sty ...
- [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- loading动画效果记录
看到好多网页都有一个炫酷的loading动画,以前不知道怎么实现的.今天学习了一下,发现其实也很简单. 首先在学习的时候偶然遇到一个pace.js的库,非常好用.优点是,不需要挂接到任何代码,自动检测 ...
- android动画介绍--Animation 实现loading动画效果
Animation的使用方法并不难.这里简单的介绍一下使用方法. 先看效果图: 效果还是不错的吧. 下面来看看使用方法. 动画效果是通过Animation来实现的,一共有四种,分别为: AlphaAn ...
- CSS3效果:animate实现点点点loading动画效果(二)
box-shadow实现的打点效果 简介 box-shadow理论上可以生成任意的图形效果,当然也就可以实现点点点的loading效果了. 实现原理 html代码,首先需要写如下html代码以及cla ...
- CSS3效果:animate实现点点点loading动画效果(一)
实现如图所示的点点点loading效果: 一:CSS3 animation实现代码 html代码: 提交订单中<span class="ani_dot">...< ...
- css3实现的3中loading动画效果
一.css3中animation动画各种属性详解: animation Value: [<animation-name> || <animation-duration> ...
- javascript 通用loading动画效果
由于项目中多处要给ajax提交的时候增加等待动画效果,所以就写了一个简单的通用js方法: 代码如下: /*ajax提交的延时等待效果*/ var AjaxLoding = new Object(); ...
随机推荐
- iOS学习26之UINavigationController
1. UINavigationController 1> 概述 UINavigationController : 导航控制器, 是 iOS 中最常用的多视图控制器之一, 用它来管理多个视图控制器 ...
- soapui中文操作手册(十)----REST Sample Project
第一步:打开MockService 1.双击MockService: 2.单击开始mockservice. 你会看到mockservice“端口8080上运行”. 参考: 配置使用MockServic ...
- [Leetcode] Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- CF 71C. Round Table Knights
题目链接 很多小的细节都没想到... #include <cstdio> #include <cstring> #include <iostream> #inclu ...
- HDU 4750 Count The Pairs(并查集)
题目链接 没有发现那个点,无奈. #include <cstdio> #include <cstring> #include <cmath> #include &l ...
- Android -- 服务组件的使用(1)
1. 效果图
- osg实例介绍
osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理 ...
- java分享第一天(java环境及原理)
1 JDK的安装目录中:环境变量中增加JAVA_HOME变量:JDK安装目录:在path中添加JDK的bin目录 2 java执行的顺序是: 1 用java编译器javac XXX.java ...
- zepto的tap事件的点透问题的几种解决方案
你可能碰到过在页面上创建一个弹出层,弹出层有个关闭的按钮,你点了这个按钮关闭弹出层后,这个按钮正下方的内容也会执行点击事件(或打开链接).这个被定义为这是一个“点透”现象. 以前,我也听到过tap的点 ...
- Git基本命令行操作
A. 新建Git仓库,创建新文件夹git init B. 添加文件到git索引git add <filename> --- 单个文件添加git add * --- 全部文件添加 C. ...