UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发

活动指示器(UIActivityIndicatorView)可以告知用户有一个操作正在进行中。进度指示器(UIProgressView )也具有同样功能,而且还可以告知用户离操作结束还多远。

这两个指示器都是派生自UIView,所以他们是视图,也可以附着在视图上。

一、UIActivityIndicatorView 活动指示器

 

1.创建

[java]  view plain copy print ?
  1. UIActivityIndicatorView* activityIndicatorView UIActivityIndicatorView  alloc  
  2.  initWithFrame:CGRectMake(250.0,20.0,30.0,30.0)];  
2. 属性设置

 

风格:

 

[java]  view plain copy print ?
  1. activityIndicatorView.activityIndicatorViewStyle= UIActivityIndicatorViewStyleGray;  
系统给你提供了3种风格:

 

 

[java]  view plain copy print ?
  1. UIActivityIndicatorViewStyleWhiteLarge                    大型白色指示器  
[java]  view plain copy print ?
  1. UIActivityIndicatorViewStyleWhite      标准尺寸白色指示器  
[java]  view plain copy print ?
  1. UIActivityIndicatorViewStyleGray    灰色指示器,用于白色背景  
[java]  view plain copy print ?
  1. 自动隐藏  
如果希望指示器停止后自动隐藏,那么要设置hidesWhenStoped属性为YES。默认是YES。设置为NO停止后指示器仍会显示。

 

 

[java]  view plain copy print ?
  1. activityIndicatorView.hidesWhenStoped NO;  
3 .显示

 

可以将它附着在任何视图上,比如表格单元、或者视图:

 

[java]  view plain copy print ?
  1.  self.view addSubview:activityIndicatorView ];  

4.启动和停止

 

 

[java]  view plain copy print ?
  1.  activityIndicatorView startAnimating ];//启动  
  2.  activityIndicatorView stopAnimating ];//停止  
二、UIProgressView  进度指示器

 

UIProgressView 与UIActivityIndicatorView相似,只不过它提供了一个接口让你可以显示一个类似进度条的东西,这样就能让用户知道当前操作完成了多少。

 

1.创建

[java]  view plain copy print ?
  1. UIProgressView* progressView UIProgressView   alloc  
  2.  initWithFrame:CGRectMake(150.0,20.0,130.0,30.0)];  
2. 属性设置

 

风格:

 

[java]  view plain copy print ?
  1. progressView .UIProgressViewStyle= UIProgressViewStyleDefault;  

 

系统给你提供了2种风格:
[java]  view plain copy print ?
  1. UIProgressViewStyleDefault                 标准进度条  
[java]  view plain copy print ?
  1. UIProgressViewStyleDefault    深灰色进度条,用于工具栏中  

3.显示

 

[java]  view plain copy print ?
  1.  self.toolBar addSubview:progressView ];  

 

4.进度
[java]  view plain copy print ?
  1. 当它显示出来时你的程序可以更新它的进度,属性progre是一个0.01.0之间的浮点数:  
[java]  view plain copy print ?
  1. progressView.progress 05 

三、网络活动指示器
[java]  view plain copy print ?
  1. 当你的应用程序使用网络时,应当在iPhone的状态条上放置一个网络指示器,警告用户正在使用网络。这时你可以用UIApplication的一个名为networkActivityIndicatorVisible的属性。通过设置这个可以启用或禁用网络指示器:UIApplication* app UIApplication  sharedApplication ];  
  2. pp.networkActivityIndicatorVisible YES;  


UIActivityIndicatorView和UIProgressView都继承自UIView,所以他们可以附属在其他视图上。UIActivityIndicatorView是一个进度提示器,显示一个小圆圈在转动,主要用在一些耗时操作的提示上,比如网络请求;UIProgressView是一个进度提示条,不过它可以显示一个进度,可以告知用户操作已经进行了多少,这二者的目的都是为了在应用程序有耗时操作时在UI上进行显示,提高用户体验。

下面分别来创建这个两个控件:

首先在ViewController.h中声明代码:

 

[cpp]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface ViewController UIViewController  
  4.   
  5. @property(retain,nonatomic) UIActivityIndicatorView *activityIndicator;  
  6. @property(retain,nonatomic) UIProgressView *progressView;  
  7.   
  8. (IBAction)startIndicator:(id)sender;  
  9. (IBAction)startProgress:(id)sender;  
  10. (IBAction)startNetWork:(id)sender;  
  11.   
  12. @end  

 

然后修改ViewController.m文件,具体的解释都在注释里面

[cpp]  view plain copy
  1. #import "ViewController.h"  
  2.   
  3. @interfaceViewController ()  
  4.   
  5. @end  
  6.   
  7. @implementation ViewController  
  8. @synthesize activityIndicator _activityIndicator;  
  9. @synthesize progressView _progressView;  
  10.   
  11. (void)viewDidLoad  
  12.  
  13.     [superviewDidLoad];  
  14.           
  15.  
  16.   
  17. (IBAction)startIndicator:(id)sender  
  18.     //初始化指示器  
  19.     self.activityIndicator [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(140, 200, 30, 30)];  
  20.       
  21.       
  22.     self.activityIndicator.activityIndicatorViewStyle UIActivityIndicatorViewStyleWhite;  
  23.       
  24.     //停止后是否隐藏(默认为YES)  
  25.     self.activityIndicator.hidesWhenStopped YES;  
  26.       
  27.     //将Indicator添加到视图中  
  28.     [self.viewaddSubview:self.activityIndicator];  
  29.       
  30.     //开始转动  
  31.     [self.activityIndicator startAnimating];  
  32.       
  33.     //操作队列  
  34.     NSOperationQueue *operationQueue [[NSOperationQueue alloc] init];  
  35.       
  36.     //设置最大的操作数  
  37.     [operationQueue setMaxConcurrentOperationCount:1];  
  38.   
  39.     //构建一个操作对象,selector指定的方法是在另外一个线程中运行的  
  40.     NSInvocationOperation *operation [[NSInvocationOperation alloc] initWithTarget:self   
  41.                                                                             selector:@selector(runIndicator) object:nil];  
  42.     //将操作加入队列,此时后台线程开始执行  
  43.     [operationQueue addOperation:operation];  
  44.   
  45.  
  46.   
  47. (IBAction)startProgress:(id)sender  
  48.     self.progressView [[UIProgressView alloc] initWithFrame:CGRectMake(70, 260, 180, 20)];  
  49.       
  50.     self.progressView.progressViewStyle UIProgressViewStyleDefault;  
  51.       
  52.     //设置进度,值为0——1.0的浮点数  
  53. //    self.progressView.progress .5;  
  54.     [self.viewaddSubview:self.progressView];  
  55.       
  56.     //设定计时器,每隔1s调用一次runProgress方法  
  57.     [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(runProgress)   userInfo:nil repeats:YES];  
  58.  
  59.   
  60. //在状态栏显示有网络请求的提示器  
  61. (IBAction)startNetWork:(id)sender  
  62.     UIApplication *app [UIApplication sharedApplication];  
  63.     if (app.isNetworkActivityIndicatorVisible)  
  64.         app.networkActivityIndicatorVisible NO;  
  65.     }else  
  66.         app.networkActivityIndicatorVisible YES;  
  67.      
  68.  
  69.   
  70. -(void)runIndicator  
  71.  
  72.     //开启线程并睡眠三秒钟  
  73.     [NSThread sleepForTimeInterval:3];  
  74.     //停止UIActivityIndicatorView  
  75.     [self.activityIndicator stopAnimating];  
  76.  
  77.   
  78. //增加progressView的进度  
  79. -(void)runProgress  
  80.  
  81.     self.progressView.progress += .1;  
  82.  
  83.   
  84. (void)viewDidUnload  
  85.  
  86.     [superviewDidUnload];  
  87.     // Release any retained subviews of the main view.  
  88.     [self.activityIndicator release];  
  89.     [self.progressView release];  
  90.  
  91.   
  92. @end  

编译运行后效果如下:



四、拓展
[java]  view plain copy print ?
  1. 是不是觉得又学了点新东西呢?确实。不过我还有个更好的东西推荐:MBProgressHUD   https://github.com/jdg/MBProgressHUD 一个更NB的第三方进度指示器,你可以按照它提供的例子去使用它,很强大的。不过有一点我要提醒你的是它是异步的,所以并不能阻塞你当前的程序,如果你想阻塞你的程序还要在逻辑控
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值