首页 > 代码库 > 等待指示器(1) -- UIActivityIndicatorView控件

等待指示器(1) -- UIActivityIndicatorView控件

iOS提供两种等待指示器:等待指示器控件(UIActivityIndicatorView)和网络等待指示器。

下面介绍UIActivityIndicatorView的使用:

1、使用目的:APP请求网络资源,请求的数据需要一段时间才能返回,为了给用户更好的体验,使用等待指示器。

2、使用方式\方法:

从技术角度说:作为控件,等待指示器可以放置于视图中。

从设计规范讲:等待指示器应该放置于工具栏、导航栏以及弹出的对话框中,请求结束应该消失

下面将等待指示器放置在导航栏上:

- (void)showActivityIndicatorViewInNavigationItem

{

  UIActivityIndicatorView *aiview = [[UIActivityIndicatorView  alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];  【1】

  self.navigationItem.titleView = aiview ;                      【2】

  [aiview  startAnimating];                                          【3】

  self.navigationItem.prompt = @"数据加载中....";          【4】

}

- (void)viewDidLoad

{

  ....

  //  查询请求数据

  action = ACTION_QUERY;

  [self startRequest];

  // 请求发出后,指示器开始旋转

  [self showActivityIndicatorViewInNavigationItem];

  // 初始化UIRefreshControl

  UIRefreshControl *rc = [[UIRefreshControl  alloc] init ];

  rc.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新..."] ; 

  [rc addTarget:self  action:@selector(refreshTableView)

            forControlEvents:UIControlEventValueChanged ];

  self.refreshControl = rc ;

}

- (void)reloadView:(NSDictionary *)resDict

{

  [self.refreshControl endRefreshing];                                                                                             

  self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新..."] ;

  // 请求完成,停止等待指示器,恢复导航栏

  self.navigationItem.titleView = nil;                    【5】

  self.navigation.prompt= nil;                                      

  ........

}

【1】:设置等待指示器的样式

【2】:设置titleView属性,就不能显示title属性了(注:title属性和titleView属性的位置是重合的)

【3】:开始动画,指示器旋转

【4】:prompt属性常用于提示用户

【5】:清除titleView属性,显示title属性

【注:】等待指示器常用方法:

- startAnimating:开始旋转动画

- stopAnimating:停止动画,停止旋转

- isAnimating:判断是否在旋转

hidesWhenStopped属性:Bool值,设置等待控制器停止旋转时隐藏,这个属性很重要。

说明:停止等待指示器本来应该调用stopAnimating方法,而放在导航栏项目中的等待指示器控件有所不同,更重要的是移除这个控件,让原来的title显示出来。