进度显示例子学习


Cocoa Touch提供用于通知用户等待进程完成的类:
1、UIActivityIndicatorView:提供一个旋转的圆,通知用户等待,不提供具体信息
2、UIProgressView:显示进度条,量化工作量(时间)
3、UIProgressHUD:不量化工作,但显示工作状态或描绘进度。注意此类不在标准的SDK中

针对以上三类,分别用代码来演示应用
1\

 
  
#define INDICATOR_VIEW 999

@interface HelloController : UIViewController
{
BOOL progressShowing;
}
@end

@implementation HelloController
- ( void ) performAction
{
UIActivityIndicatorView
* activityIndicator = (UIActivityIndicatorView * )[self.view viewWithTag:INDICATOR_VIEW];
if (progressShowing) [activityIndicator stopAnimating]; else [activityIndicator startAnimating];
progressShowing
= ! progressShowing;
}

- ( id ) init
{
if (self = [super init]) self.title = @" Hello World " ;
return self;
}

- ( void )loadView
{
UIView
* contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view
= contentView;
contentView.backgroundColor
= [UIColor whiteColor];
[contentView release];

self.navigationItem.rightBarButtonItem
= [[[UIBarButtonItem alloc]
initWithTitle:
@" Do It "
style:UIBarButtonItemStylePlain
target:self
action:@selector(performAction)] autorelease];

// Add the progress indicator but do not start it
progressShowing = NO;
UIActivityIndicatorView
* activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake( 0.0f , 0.0f , 32.0f , 32.0f )];
[activityIndicator setCenter:CGPointMake(
160.0f , 208.0f )];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.tag
= INDICATOR_VIEW;
[contentView addSubview:activityIndicator];
[activityIndicator release];
}
@end


代码中个人觉得关键的地方在:progressShowing和activityIndicator.tag = INDICATOR_VIEW;[contentView addSubview:activityIndicator];


2\

扩展UIActionSheet函数
 
  
@interface UIActionSheet (extended)
- ( void ) setNumberOfRows: (NSInteger) rows;
- ( void ) setMessage: (NSString * )message;
@end


//Timer事件处理
 
  
- ( void ) incrementBar: ( id ) timer
{
amountDone
+= 1.0f ;
UIProgressView
* progbar = (UIProgressView * )[self.baseSheet viewWithTag:PROGRESS_BAR];
[progbar setProgress: (amountDone
/ 20.0 )];
if (amountDone > 20.0 )
{
[self.baseSheet dismissWithClickedButtonIndex:
0 animated:YES];
[timer invalidate];
}
}

//呈现视图
 
  
- ( void ) presentSheet
{

if ( ! self.baseSheet) {
baseSheet
= [[UIActionSheet alloc]
initWithTitle:
@" Please Wait "
delegate :self
cancelButtonTitle:nil
destructiveButtonTitle: nil
otherButtonTitles: nil];
[baseSheet setNumberOfRows:
5 ];
[baseSheet setMessage:
@" Updating Internal Databases " ];

UIProgressView
* progbar = [[UIProgressView alloc] initWithFrame:CGRectMake( 50.0f , 70.0f , 220.0f , 90.0f )];
progbar.tag
= PROGRESS_BAR;
[progbar setProgressViewStyle: UIProgressViewStyleDefault];
[baseSheet addSubview:progbar];
[progbar release];
}

UIProgressView
* progbar = (UIProgressView * )[self.view viewWithTag:PROGRESS_BAR];
[progbar setProgress:(amountDone
= 0.0f )];
[NSTimer scheduledTimerWithTimeInterval:
0.5 target: self selector: @selector(incrementBar:) userInfo: nil repeats: YES];
[baseSheet showInView:self.view];
}


注意释放函数
 
  
- ( void ) dealloc
{
// 释放baseSheet
if (self.baseSheet) [self.baseSheet release];
[super dealloc];
}


此例Timer来定时更新进度条状态
为了显示进度状态,特用了UIActionSheet来处理

在XCode4上执行,看不到应有的效果~~杯具中,看后续怎么处理

另外,
        [baseSheet setNumberOfRows:5];
        [baseSheet setMessage:@"Updating Internal Databases"];
没有执行应有的效果~~~

3\
声明已存在的类

 
  
- ( void ) dealloc
{
// 释放baseSheet
if (self.baseSheet) [self.baseSheet release];
[super dealloc];
}


控制器中部分代码

 
  
- ( void ) killHUD: ( id ) aHUD
{
[aHUD show:NO];
[aHUD release];
}
- ( void ) presentSheet
{
id HUD = [[UIProgressHUD alloc] initWithWindow:[self.view superview]];
[HUD setText:
@" Downloading File. Please wait. " ];
[HUD show:YES];

[self performSelector:@selector(killHUD:) withObject:HUD afterDelay:
5.0 ];
}


类学习:

UIActivityIndicatorView类

The UIActivityIndicatorView class creates and manages an indicator showing the indeterminate progress of a task.

UIActivityIndicatorView类创建并管理指示器,此指示器用于显示当前任务的进度。

方法:
    – initWithActivityIndicatorStyle:
    – startAnimating
    – stopAnimating
    – isAnimating
   
属性:
      hidesWhenStopped表示当动画结束后此视图是否隐藏

      activityIndicatorViewStyle指示器视图样式

UIProgressView类

方法:
    – initWithProgressViewStyle:

属性:
    progress:进度,float,0.0-1.0
    progressViewStyle:进度视图样式
   
未公开:
UIProgressHUD类   

UIActionSheet的部分函数:
- (void) setNumberOfRows: (NSInteger) rows;
- (void) setMessage: (NSString *)message;

转载于:https://www.cnblogs.com/GoGoagg/archive/2011/05/26/2058852.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值