iOS等待屏幕

时间:2011-06-13 21:47:52

标签: ios

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

3 个答案:

答案 0 :(得分:12)

Fist简短回答是:是的,最简单的方法是使用UIActivityIndi​​catorView。

如果你不喜欢所有这些“大”的静态库,只需使用它:

#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, 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;
}

答案 1 :(得分:8)

MBProgressHUD可能正是您所寻找的:
https://github.com/matej/MBProgressHUD

enter image description here

答案 2 :(得分:0)

有许多方法可以做到这一点,但是,它可以是一个简单的UIView

也许您应该查看three20库,它提供内置加载器TTActivityLabel,如下所示:

TTActivityLabel