IOS UIActivityIndicatorView、UIProgressView

本文详细介绍了如何在iOS应用中使用UIActivityIndicatorView和UIProgressView来提升用户体验。UIActivityIndicatorView适用于耗时操作的提示,如网络请求;UIProgressView则通过显示进度条让用户了解操作进展。

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

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

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


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





//

//  ViewController.h

//  navigationTextColor

//

//  Created by U箱超市 on 14-4-3.

//  Copyright (c) 2014 姚琪. All rights reserved.

//


#import <UIKit/UIKit.h>


@interface ViewController : UIViewController

@property (nonatomic, retain)UIActivityIndicatorView *activityIndicatorView;

@property (nonatomic, retain)UIProgressView *progressView;

- (IBAction)startIndicator:(id)sender;

- (IBAction)startProgress:(id)sender;

- (IBAction)startNetwork:(id)sender;

@end


//

//  ViewController.m

//  navigationTextColor

//

//  Created by U箱超市 on 14-4-3.

//  Copyright (c) 2014 姚琪. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController

@synthesize activityIndicatorView = _activityIndicatorView;

@synthesize progressView = _progressView;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)startIndicator:(id)sender {

    //初始化指示器

    self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(140, 200, 50, 50)];

    

    /*

     指定指示器的类型

     一共有三种类型:

     UIActivityIndicatorViewStyleWhiteLarge   //大型白色指示器

     UIActivityIndicatorViewStyleWhite      //标准尺寸白色指示器

     UIActivityIndicatorViewStyleGray    //灰色指示器,用于白色背景

     */

    self.activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

    

    //停止后是否隐藏(默认为YES

    self.activityIndicatorView.hidesWhenStopped = YES;

    

    //Indicator添加到视图中

    [self.view addSubview:self.activityIndicatorView];

    

    //开始转动

    [self.activityIndicatorView 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)];

    /*

     设置风格属性

     有两种风格属性:

     UIProgressViewStyleDefault

     UIProgressViewStyleBar

     */

    self.progressView.progressViewStyle = UIProgressViewStyleDefault;

    

    //设置进度,值为0——1.0的浮点数

    //    self.progressView.progress = .5;

    [self.view addSubview: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.activityIndicatorView stopAnimating];

    }

     

     //增加progressView的进度

     -(void)runProgress

    {

        self.progressView.progress += .1;

    }

@end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值