#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
, подобные этим:
Комментарии:
1. g, есть ли способ лучше другого?
2. Я предпочитаю использовать фреймворк, подобный three20, который предлагает это и многое другое, но при первом использовании он сложен. Это действительно зависит от ваших потребностей. Просто добавьте a
UIView
с прозрачностью.alpha = .5f
, включая, почему не aUILabel
и aUISpinner
, и все готово3. g, на самом деле я хотел бы создать серый / прозрачный вид, который будет занимать «почти» весь экран и который создаст впечатление, что он плавает, например, на черном фоне.
4. Вы также можете просто использовать полупрозрачный UIImageView с чем угодно, отредактированным в photoshop , для конкретного рендеринга… Это действительно не так сложно сделать, серьезно 🙂