iPhone:进度指标

时间:2011-07-18 11:27:05

标签: iphone

在我的应用程序中,当我从服务中下载某些内容时,我会显示进度指示器:

 - (void)setupProgressIndicator {
    MBProgressHUD *progressHUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:progressHUD];
    self.progressIndicator = progressHUD;
    [progressHUD release];
 }

[self.progressIndicator show:YES];

我的视图有我在AppDelegate中设置的导航栏,当显示指示器时,我仍然可以选择导航栏按钮...可以MBProgressHUB覆盖整个屏幕???因为我不想在同步开始时禁用按钮而不是在同步完成时启用它们...我认为指标应该覆盖整个屏幕。有任何想法吗 ?感谢...

3 个答案:

答案 0 :(得分:3)

如果你愿意,这是我的实现使用它 将它放在appDelegate中,并在应用程序的任何地方使用。

#pragma mark -
#pragma mark Waiting View
- (void)showWaitingView {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    CGRect frame = CGRectMake(90, 190, 32, 32);
    UIActivityIndicatorView* progressInd = [[UIActivityIndicatorView alloc] initWithFrame:frame];
    [progressInd startAnimating];
    progressInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

    frame = CGRectMake(130, 193, 140, 30);
    UILabel *waitingLable = [[UILabel alloc] initWithFrame:frame];
    waitingLable.text = @"Processing...";
    waitingLable.textColor = [UIColor whiteColor];
    waitingLable.font = [UIFont systemFontOfSize:20];;
    waitingLable.backgroundColor = [UIColor clearColor];
    frame = [[UIScreen mainScreen] applicationFrame];
    UIView *theView = [[UIView alloc] initWithFrame:frame];
    theView.backgroundColor = [UIColor blackColor];
    theView.alpha = 0.7;
    theView.tag = 999;
    [theView addSubview:progressInd];
    [theView addSubview:waitingLable];

    [progressInd release];
    [waitingLable release];

    [window addSubview:[theView autorelease]];
    [window bringSubviewToFront:theView];
    [pool drain];
}

- (void)removeWaitingView {
    UIView *v = [window viewWithTag:999];
    if(v) [v removeFromSuperview];

}

答案 1 :(得分:1)

通常的事情是添加一个透明视图覆盖整个屏幕,这将捕获触摸事件。或者你可以使你的HUD与屏幕大小相同,只在中心显示可见的小部件。

答案 2 :(得分:0)

    - (IBAction)showWithCustomView:(id)sender {

        HUD = [[MBProgressHUD alloc] initWithView:self.view];

        [self.view addSubview:HUD];

        HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease];


        HUD.customView.frame=CGRectMake(0, 0, 320, 460);//Ur answer

        HUD.mode = MBProgressHUDModeCustomView;

        HUD.delegate = self;
        HUD.labelText = @"Completed";

        [HUD show:YES];
        [HUD hide:YES afterDelay:3];
    }