Экран ожидания iOS

#ios

#iOS

Вопрос:

При запуске моего приложения я хотел бы отобразить своего рода «ожидающий просмотр», чтобы я мог выполнять первые http-вызовы перед доступом к приложению.
Я увидел хороший экран, весь серый и немного прозрачный, только с индикатором активности внутри.
Я действительно не знаю, как правильно создать такой вид просмотра, это простой UIView?

Ответ №1:

Первый короткий ответ: да, самый простой способ — использовать UIActivityIndicatorView.

Если вам не нравятся все эти «большие» статические библиотеки, просто используйте это:

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

Ответ №2:

MBProgressHUD может быть тем, что вы ищете:
https://github.com/matej/MBProgressHUD

введите описание изображения здесь

Комментарии:

1. спасибо, я уже использовал этот в прошлом, и я помню, что он отличный. Можно ли настроить высоту и ширину так, чтобы они соответствовали размеру экрана минус «пара пикселей»?

Ответ №3:

Есть много-много способов сделать это, но да, это может быть простым UIView .

Возможно, вам стоит взглянуть на библиотеку three20, которая предлагает встроенные загрузчики TTActivityLabel , подобные этим:

TTActivityLabel

Комментарии:

1. g, есть ли способ лучше другого?

2. Я предпочитаю использовать фреймворк, подобный three20, который предлагает это и многое другое, но при первом использовании он сложен. Это действительно зависит от ваших потребностей. Просто добавьте a UIView с прозрачностью .alpha = .5f , включая, почему не a UILabel и a UISpinner , и все готово

3. g, на самом деле я хотел бы создать серый / прозрачный вид, который будет занимать «почти» весь экран и который создаст впечатление, что он плавает, например, на черном фоне.

4. Вы также можете просто использовать полупрозрачный UIImageView с чем угодно, отредактированным в photoshop , для конкретного рендеринга… Это действительно не так сложно сделать, серьезно 🙂