iOS等待屏幕

问题描述

| 启动我的应用程序后,我想显示一种“等待视图”,以便在访问该应用程序之前可以进行第一个http调用。 我看到了一个不错的,全灰色,有点透明,里面只有一个活动指示器。 我真的不知道如何以一种良好的方式来构建这种视图,这是一个简单的UIView吗?     

解决方法

        MBProgressHUD可能是您正在寻找的东西: https://github.com/matej/MBProgressHUD     ,        首要的简短答案是:是的,最简单的方法是使用UIActivityIndi​​catorView。 如果您不喜欢所有这些\“ big \”静态库,请使用以下代码:
#import <QuartzCore/QuartzCore.h>

.....

- (UIActivityIndicatorView *)showActivityIndicatorOnView:(UIView*)aView
{
    CGSize viewSize = aView.bounds.size;

    // create new dialog box view and components
    UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc]
    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    // other size? change it
    activityIndicatorView.bounds = CGRectMake(0,65,65);
    activityIndicatorView.hidesWhenStopped = YES;
    activityIndicatorView.alpha = 0.7f;
    activityIndicatorView.backgroundColor = [UIColor blackColor];
    activityIndicatorView.layer.cornerRadius = 10.0f;

    // display it in the center of your view
    activityIndicatorView.center = CGPointMake(viewSize.width / 2.0,viewSize.height / 2.0);

    [aView addSubview:activityIndicatorView];

    [activityIndicatorView startAnimating];

    return activityIndicatorView;
}
这需要访问QuartzCore类,因此将其添加到您的框架中。任务完成后,将其发送给stopAnimating,它将消失。如果您不再需要它,则从视图中将其删除以节省内存(顺便说一下,这是ARC代码)。 我这样称呼它
self.activityIndicatorView = [self showActivityIndicatorOnView:self.parentViewController.view];
在这种情况下,我将UINavigationViewController用作应用程序中的主视图控制器。这很重要,因为活动指示器应该显示在屏幕中间,而不是显示在屏幕中间。在表格视图中间。 最简单的实现是这样的:
- (UIActivityIndicatorView *)showSimpleActivityIndicatorOnView:(UIView*)aView
{
    CGSize viewSize = aView.bounds.size;

    // create new dialog box view and components
    UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    activityIndicatorView.center = CGPointMake(viewSize.width / 2.0,viewSize.height / 2.0);

    [aView addSubview:activityIndicatorView];

    [activityIndicatorView startAnimating];

    return activityIndicatorView;
}
    ,        有很多方法可以做到这一点,但是可以,它可以是简单的“ 3”。 也许您应该看一下three20库,它提供了内置加载器
TTActivityLabel
,如下所示: