下面我就来罗列三种实现loading动画效果的方法。

方法一:使用UIImageView自带的方法来实现,这也是我推荐的实现方法。

  1. 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];
  2. UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 80, 30)];
  3. imageView.animationImages = array; //动画图片数组
  4. imageView.animationDuration = 2; //执行一次完整动画所需的时长
  5. //    gifImageView.animationRepeatCount = 0;  //动画重复次数 0表示无限次,默认为0
  6. [imageView startAnimating];
  7. [self.view addSubview:imageView];

方法二:使用UIImageView+NSTimer(定时器)来实现,如果没有猜错的话,第一种方式内部的实现方法也是使用了定时器,只不过我们第二种方法是自己DIY一个属于自己的

控件,自己想要扩展什么功能就扩展什么。

  1. #import <UIKit/UIKit.h>
  2. @interface imageAnimation : UIImageView
  3. @property (strong, nonatomic) NSTimer *animation_timer;
  4. @property (strong, nonatomic) NSMutableArray *imageArray;
  5. @property (assign) int currentIndex;
  6. @property (assign) float interval;
  7. - (void)startLoading;
  8. - (void)stopLoading;
  9. - (void)initLoadingView:(NSMutableArray *)imageArray timeInterval:(float)time;
  10. @end
  1. #import "imageAnimation.h"
  2. @implementation imageAnimation
  3. @synthesize animation_timer = _animation_timer;
  4. @synthesize imageArray = _imageArray;
  5. @synthesize currentIndex = _currentIndex;
  6. @synthesize interval = _interval;
  7. - (id)initWithFrame:(CGRect)frame
  8. {
  9. self = [super initWithFrame:frame];
  10. if (self) {
  11. // Initialization code
  12. }
  13. return self;
  14. }
  15. /*
  16. // Only override drawRect: if you perform custom drawing.
  17. // An empty implementation adversely affects performance during animation.
  18. - (void)drawRect:(CGRect)rect
  19. {
  20. // Drawing code
  21. }
  22. */
  23. - (void)initLoadingView:(NSMutableArray *)imageArray timeInterval:(float)time{
  24. self.imageArray = imageArray;
  25. self.interval = time;
  26. self.animation_timer = [NSTimer scheduledTimerWithTimeInterval:self.interval target:self selector:@selector(startLoading) userInfo:nil repeats:YES];
  27. }
  28. //开始loading
  29. - (void)startLoading{
  30. if(!self.imageArray || self.imageArray.count < 1){
  31. [self.animation_timer invalidate];
  32. return;
  33. }
  34. self.currentIndex = (self.currentIndex +1)%self.imageArray.count;
  35. self.image = [UIImage imageNamed:[self.imageArray objectAtIndex:self.currentIndex]];
  36. }
  37. //结束loading
  38. -(void)stopLoading{
  39. [self.animation_timer invalidate];
  40. }
  41. @end

方法三:使用UIWebView来加载gif图片,除非你要用到webView,不然就不要使用这种方式来实现

    1. NSData *gif = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"1" ofType:@"gif"]];
    2. // view生成
    3. UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(100, 100, 70, 30)];
    4. webView.userInteractionEnabled = NO;//用户不可交互
    5. [webView loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
    6. [self.view addSubview:webView];

实现loading动画效果的更多相关文章

  1. ios开发之简单实现loading动画效果

    最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loadi ...

  2. Atitit Loading 动画效果

    Atitit Loading 动画效果 使用才场景,加载数据,以及显示警告灯.. 要有手动关闭按钮 <div class="spinner loading_part" sty ...

  3. [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. loading动画效果记录

    看到好多网页都有一个炫酷的loading动画,以前不知道怎么实现的.今天学习了一下,发现其实也很简单. 首先在学习的时候偶然遇到一个pace.js的库,非常好用.优点是,不需要挂接到任何代码,自动检测 ...

  5. android动画介绍--Animation 实现loading动画效果

    Animation的使用方法并不难.这里简单的介绍一下使用方法. 先看效果图: 效果还是不错的吧. 下面来看看使用方法. 动画效果是通过Animation来实现的,一共有四种,分别为: AlphaAn ...

  6. CSS3效果:animate实现点点点loading动画效果(二)

    box-shadow实现的打点效果 简介 box-shadow理论上可以生成任意的图形效果,当然也就可以实现点点点的loading效果了. 实现原理 html代码,首先需要写如下html代码以及cla ...

  7. CSS3效果:animate实现点点点loading动画效果(一)

    实现如图所示的点点点loading效果: 一:CSS3 animation实现代码 html代码: 提交订单中<span class="ani_dot">...< ...

  8. css3实现的3中loading动画效果

    一.css3中animation动画各种属性详解: animation Value:     [<animation-name> || <animation-duration> ...

  9. javascript 通用loading动画效果

    由于项目中多处要给ajax提交的时候增加等待动画效果,所以就写了一个简单的通用js方法: 代码如下: /*ajax提交的延时等待效果*/ var AjaxLoding = new Object(); ...

随机推荐

  1. 向Web开发人员推荐12款优秀的 Twitter Bootstrap 组件和工具

    http://www.cnblogs.com/lhb25/archive/2012/09/11/resources-that-complement-twitter-bootstrap.html

  2. AngularJS学习笔记之directive—scope选项与绑定策略

    From:http://www.linuxidc.com/Linux/2015-05/116924.htm scope:{}使指令与外界隔离开来,使其模板(template)处于non-inherit ...

  3. Codeforces Round #249 (Div. 2) A - Queue on Bus Stop

    水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...

  4. [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化

    11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ...

  5. [Cocos2D-x For WP8]CocosDenshion音频播放

    Cocos2D-x的音频分为长时间的背景音乐和短的音效两种,我们可以通过SimpleAudioEngine::sharedEngine()方法来获取音频播放的引擎,然后调用对音频相关的操作方法就可以了 ...

  6. 7zip ubuntu使用

    http://www.cnblogs.com/yiwd/p/3649094.html 安装: sudo apt-get install p7zip 解压: 7zr x file -r -o./path ...

  7. GNU for x86汇编语法

    作者:冯老师,华清远见嵌入式学院讲师. 译自“Using as The GNU Assembler January 1994”. 参考Tornado随机文档“GNU Toolkit User's Gu ...

  8. 五、点数器《苹果iOS实例编程入门教程》

    该app为应用的功能为一个简单的数数程序 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applic ...

  9. Ubuntu root密码修改

    安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...

  10. [LintCode] Wiggle Sort 扭动排序

    Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...