UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
2014-09-18 20:25
549 查看
活动指示器(UIActivityIndicatorView)可以告知用户有一个操作正在进行中。进度指示器(UIProgressView )也具有同样功能,而且还可以告知用户离操作结束还多远。
这两个指示器都是派生自UIView,所以他们是视图,也可以附着在视图上。
一、UIActivityIndicatorView 活动指示器
1.创建
[java] view plaincopyprint?
UIActivityIndicatorView* activityIndicatorView = [ [ UIActivityIndicatorView alloc ]
initWithFrame:CGRectMake(250.0,20.0,30.0,30.0)];
2. 属性设置
风格:
[java] view plaincopyprint?
activityIndicatorView.activityIndicatorViewStyle= UIActivityIndicatorViewStyleGray;
系统给你提供了3种风格:
[java] view plaincopyprint?
UIActivityIndicatorViewStyleWhiteLarge 大型白色指示器
[java] view plaincopyprint?
UIActivityIndicatorViewStyleWhite 标准尺寸白色指示器
[java] view plaincopyprint?
UIActivityIndicatorViewStyleGray 灰色指示器,用于白色背景
[java] view plaincopyprint?
自动隐藏
如果希望指示器停止后自动隐藏,那么要设置hidesWhenStoped属性为YES。默认是YES。设置为NO停止后指示器仍会显示。
[java] view plaincopyprint?
activityIndicatorView.hidesWhenStoped = NO;
3.显示
可以将它附着在任何视图上,比如表格单元、或者视图:
[java] view plaincopyprint?
[ self.view addSubview:activityIndicatorView ];
4.启动和停止
[java] view plaincopyprint?
[ activityIndicatorView startAnimating ];//启动
[ activityIndicatorView stopAnimating ];//停止
二、UIProgressView 进度指示器
UIProgressView 与UIActivityIndicatorView相似,只不过它提供了一个接口让你可以显示一个类似进度条的东西,这样就能让用户知道当前操作完成了多少。
1.创建
[java] view plaincopyprint?
UIProgressView* progressView = [ [ UIProgressView alloc ]
initWithFrame:CGRectMake(150.0,20.0,130.0,30.0)];
2. 属性设置
风格:
[java] view plaincopyprint?
progressView .UIProgressViewStyle= UIProgressViewStyleDefault;
系统给你提供了2种风格:
[java] view plaincopyprint?
UIProgressViewStyleDefault 标准进度条
[java] view plaincopyprint?
UIProgressViewStyleDefault 深灰色进度条,用于工具栏中
3.显示
[java] view plaincopyprint?
[ self.toolBar addSubview:progressView ];
4.进度
[java] view plaincopyprint?
当它显示出来时你的程序可以更新它的进度,属性progre是一个0.0到1.0之间的浮点数:
[java] view plaincopyprint?
progressView.progress = 0. 5;
三、网络活动指示器
[java] view plaincopyprint?
当你的应用程序使用网络时,应当在iPhone的状态条上放置一个网络指示器,警告用户正在使用网络。这时你可以用UIApplication的一个名为networkActivityIndicatorVisible的属性。通过设置这个可以启用或禁用网络指示器:UIApplication* app = [ UIApplication sharedApplication ];
pp.networkActivityIndicatorVisible = YES;
UIActivityIndicatorView和UIProgressView都继承自UIView,所以他们可以附属在其他视图上。UIActivityIndicatorView是一个进度提示器,显示一个小圆圈在转动,主要用在一些耗时操作的提示上,比如网络请求;UIProgressView是一个进度提示条,不过它可以显示一个进度,可以告知用户操作已经进行了多少,这二者的目的都是为了在应用程序有耗时操作时在UI上进行显示,提高用户体验。
下面分别来创建这个两个控件:
首先在ViewController.h中声明代码:
[cpp] view plaincopy
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(retain,nonatomic) UIActivityIndicatorView *activityIndicator;
@property(retain,nonatomic) UIProgressView *progressView;
- (IBAction)startIndicator:(id)sender;
- (IBAction)startProgress:(id)sender;
- (IBAction)startNetWork:(id)sender;
@end
然后修改ViewController.m文件,具体的解释都在注释里面
[cpp] view plaincopy
#import "ViewController.h"
@interfaceViewController ()
@end
@implementation ViewController
@synthesize activityIndicator = _activityIndicator;
@synthesize progressView = _progressView;
- (void)viewDidLoad
{
[superviewDidLoad];
}
- (IBAction)startIndicator:(id)sender {
//初始化指示器
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(140, 200, 30, 30)];
self.activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
//停止后是否隐藏(默认为YES)
self.activityIndicator.hidesWhenStopped = YES;
//将Indicator添加到视图中
[self.viewaddSubview:self.activityIndicator];
//开始转动
[self.activityIndicator startAnimating];
//操作队列
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
//设置最大的操作数
[operationQueue setMaxConcurrentOperationCount:1];
//构建一个操作对象,selector指定的方法是在另外一个线程中运行的
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(runIndicator) object:nil];
//将操作加入队列,此时后台线程开始执行
[operationQueue addOperation:operation];
}
- (IBAction)startProgress:(id)sender {
self.progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(70, 260, 180, 20)];
self.progressView.progressViewStyle = UIProgressViewStyleDefault;
//设置进度,值为0——1.0的浮点数
// self.progressView.progress = .5;
[self.viewaddSubview:self.progressView];
//设定计时器,每隔1s调用一次runProgress方法
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(runProgress) userInfo:nil repeats:YES];
}
//在状态栏显示有网络请求的提示器
- (IBAction)startNetWork:(id)sender {
UIApplication *app = [UIApplication sharedApplication];
if (app.isNetworkActivityIndicatorVisible) {
app.networkActivityIndicatorVisible = NO;
}else {
app.networkActivityIndicatorVisible = YES;
}
}
-(void)runIndicator
{
//开启线程并睡眠三秒钟
[NSThread sleepForTimeInterval:3];
//停止UIActivityIndicatorView
[self.activityIndicator stopAnimating];
}
//增加progressView的进度
-(void)runProgress
{
self.progressView.progress += .1;
}
- (void)viewDidUnload
{
[superviewDidUnload];
// Release any retained subviews of the main view.
[self.activityIndicator release];
[self.progressView release];
}
@end
编译运行后效果如下:
![](http://my.csdn.net/uploads/201208/01/1343795908_6464.png)
四、拓展
[java] view plaincopyprint?
是不是觉得又学了点新东西呢?确实。不过我还有个更好的东西推荐:MBProgressHUD https://github.com/jdg/MBProgressHUD 一个更NB的第三方进度指示器,你可以按照它提供的例子去使用它,很强大的。不过有一点我要提醒你的是它是异步的,所以并不能阻塞你当前的程序,如果你想阻塞你的程序还要在逻辑控
这两个指示器都是派生自UIView,所以他们是视图,也可以附着在视图上。
一、UIActivityIndicatorView 活动指示器
1.创建
[java] view plaincopyprint?
UIActivityIndicatorView* activityIndicatorView = [ [ UIActivityIndicatorView alloc ]
initWithFrame:CGRectMake(250.0,20.0,30.0,30.0)];
2. 属性设置
风格:
[java] view plaincopyprint?
activityIndicatorView.activityIndicatorViewStyle= UIActivityIndicatorViewStyleGray;
系统给你提供了3种风格:
[java] view plaincopyprint?
UIActivityIndicatorViewStyleWhiteLarge 大型白色指示器
[java] view plaincopyprint?
UIActivityIndicatorViewStyleWhite 标准尺寸白色指示器
[java] view plaincopyprint?
UIActivityIndicatorViewStyleGray 灰色指示器,用于白色背景
[java] view plaincopyprint?
自动隐藏
如果希望指示器停止后自动隐藏,那么要设置hidesWhenStoped属性为YES。默认是YES。设置为NO停止后指示器仍会显示。
[java] view plaincopyprint?
activityIndicatorView.hidesWhenStoped = NO;
3.显示
可以将它附着在任何视图上,比如表格单元、或者视图:
[java] view plaincopyprint?
[ self.view addSubview:activityIndicatorView ];
4.启动和停止
[java] view plaincopyprint?
[ activityIndicatorView startAnimating ];//启动
[ activityIndicatorView stopAnimating ];//停止
二、UIProgressView 进度指示器
UIProgressView 与UIActivityIndicatorView相似,只不过它提供了一个接口让你可以显示一个类似进度条的东西,这样就能让用户知道当前操作完成了多少。
1.创建
[java] view plaincopyprint?
UIProgressView* progressView = [ [ UIProgressView alloc ]
initWithFrame:CGRectMake(150.0,20.0,130.0,30.0)];
2. 属性设置
风格:
[java] view plaincopyprint?
progressView .UIProgressViewStyle= UIProgressViewStyleDefault;
系统给你提供了2种风格:
[java] view plaincopyprint?
UIProgressViewStyleDefault 标准进度条
[java] view plaincopyprint?
UIProgressViewStyleDefault 深灰色进度条,用于工具栏中
3.显示
[java] view plaincopyprint?
[ self.toolBar addSubview:progressView ];
4.进度
[java] view plaincopyprint?
当它显示出来时你的程序可以更新它的进度,属性progre是一个0.0到1.0之间的浮点数:
[java] view plaincopyprint?
progressView.progress = 0. 5;
三、网络活动指示器
[java] view plaincopyprint?
当你的应用程序使用网络时,应当在iPhone的状态条上放置一个网络指示器,警告用户正在使用网络。这时你可以用UIApplication的一个名为networkActivityIndicatorVisible的属性。通过设置这个可以启用或禁用网络指示器:UIApplication* app = [ UIApplication sharedApplication ];
pp.networkActivityIndicatorVisible = YES;
UIActivityIndicatorView和UIProgressView都继承自UIView,所以他们可以附属在其他视图上。UIActivityIndicatorView是一个进度提示器,显示一个小圆圈在转动,主要用在一些耗时操作的提示上,比如网络请求;UIProgressView是一个进度提示条,不过它可以显示一个进度,可以告知用户操作已经进行了多少,这二者的目的都是为了在应用程序有耗时操作时在UI上进行显示,提高用户体验。
下面分别来创建这个两个控件:
首先在ViewController.h中声明代码:
[cpp] view plaincopy
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(retain,nonatomic) UIActivityIndicatorView *activityIndicator;
@property(retain,nonatomic) UIProgressView *progressView;
- (IBAction)startIndicator:(id)sender;
- (IBAction)startProgress:(id)sender;
- (IBAction)startNetWork:(id)sender;
@end
然后修改ViewController.m文件,具体的解释都在注释里面
[cpp] view plaincopy
#import "ViewController.h"
@interfaceViewController ()
@end
@implementation ViewController
@synthesize activityIndicator = _activityIndicator;
@synthesize progressView = _progressView;
- (void)viewDidLoad
{
[superviewDidLoad];
}
- (IBAction)startIndicator:(id)sender {
//初始化指示器
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(140, 200, 30, 30)];
self.activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
//停止后是否隐藏(默认为YES)
self.activityIndicator.hidesWhenStopped = YES;
//将Indicator添加到视图中
[self.viewaddSubview:self.activityIndicator];
//开始转动
[self.activityIndicator startAnimating];
//操作队列
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
//设置最大的操作数
[operationQueue setMaxConcurrentOperationCount:1];
//构建一个操作对象,selector指定的方法是在另外一个线程中运行的
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(runIndicator) object:nil];
//将操作加入队列,此时后台线程开始执行
[operationQueue addOperation:operation];
}
- (IBAction)startProgress:(id)sender {
self.progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(70, 260, 180, 20)];
self.progressView.progressViewStyle = UIProgressViewStyleDefault;
//设置进度,值为0——1.0的浮点数
// self.progressView.progress = .5;
[self.viewaddSubview:self.progressView];
//设定计时器,每隔1s调用一次runProgress方法
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(runProgress) userInfo:nil repeats:YES];
}
//在状态栏显示有网络请求的提示器
- (IBAction)startNetWork:(id)sender {
UIApplication *app = [UIApplication sharedApplication];
if (app.isNetworkActivityIndicatorVisible) {
app.networkActivityIndicatorVisible = NO;
}else {
app.networkActivityIndicatorVisible = YES;
}
}
-(void)runIndicator
{
//开启线程并睡眠三秒钟
[NSThread sleepForTimeInterval:3];
//停止UIActivityIndicatorView
[self.activityIndicator stopAnimating];
}
//增加progressView的进度
-(void)runProgress
{
self.progressView.progress += .1;
}
- (void)viewDidUnload
{
[superviewDidUnload];
// Release any retained subviews of the main view.
[self.activityIndicator release];
[self.progressView release];
}
@end
编译运行后效果如下:
![](http://my.csdn.net/uploads/201208/01/1343795908_6464.png)
四、拓展
[java] view plaincopyprint?
是不是觉得又学了点新东西呢?确实。不过我还有个更好的东西推荐:MBProgressHUD https://github.com/jdg/MBProgressHUD 一个更NB的第三方进度指示器,你可以按照它提供的例子去使用它,很强大的。不过有一点我要提醒你的是它是异步的,所以并不能阻塞你当前的程序,如果你想阻塞你的程序还要在逻辑控
相关文章推荐
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器
- UIActivityIndicatorView、UIProgressView 活动与进度指示器 (实例)
- 转 UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- UIActivityIndicatorView、UIProgressView 活动与进度指示器 (实例)
- 【初学】UI控件学习笔记-UIActivityIndicatorView活动指示器
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- UIActivityIndicatorView和UIProgressView进度提示器
- IOS UIActivityIndicatorView、UIProgressView
- (转圈提醒)UIActivityIndicatorView、UIProgressView 活动与进度指示器
- Andorid 自定义 类似iOS活动指示器 UIActivityIndicatorView
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- iOS开发-ios7样式绕圈活动指示器(自定义Activity Indicator View)
- IOS开发UI基础UIActivityIndicatorView的属性