2010-08-16 4 views
11

Кто-нибудь знает, как показать округленный квадрат с индикатором вращающейся активности? Он используется во многих приложениях. Если вы не знаете, о чем я говорю, это похоже на индикатор при изменении громкости на вашем Mac, но с более темным фоном. Я не уверен, что он встроен в iOS или кто-то сделал это.Индикатор большой активности на iPhone

, как в этом посте, но не весь экран только индикатор активности How to create a full-screen modal status display on iPhone?

+0

Прочтите это. http://developer.apple.com/iphone/library/documentation/uikit/reference/UIActivityIndicatorView_Class/Reference/UIActivityIndicatorView.html – Gary

ответ

14

Ваш скриншот - это, вероятно, использование модуля DSActivityView от David Sinclair. В частности, компонент DSBezelActivityView. Или, если нет, это близкая копия.

http://www.dejal.com/developer/dsactivityview

Я использую DSActivityView все время. Большая библиотека. Бросьте эту вещь, снимая данные, радует пользователей и клиентов.

+0

Отличный класс. Я собираюсь держать его под рукой для стандартизации UX в моих приложениях. Это чрезвычайно элегантно и не наносит лишних накладных расходов. – geerlingguy

0

Вы действительно смотрите на использование двух подклассов UIView и пользовательского .png-изображения, чтобы получить нужный вам вид. Серая полупрозрачная коробка будет объектом UIImageView, чтобы получить эффект, который вы ищете, вам нужен файл .png серого квадрата с закругленными углами, он не обязательно должен быть окончательного размера, если есть хотя бы один пиксель прямой границы между углами будет работать нормально. Затем вы загрузите его как UIImage с помощью UIImage stretchableImageWithLeftCapWidth: topCapHeight: method, это позволит вам указать верхнюю и левую части изображения, которые должны оставаться неизменными, и 1 пиксельный срез в каждом направлении будет растянут чтобы заполнить представление UIImage, в котором вы используете изображение. http://www.bit-101.com/blog/?p=2275 имеет отличный пример того, как это работает. Итак, создайте UIImage, затем создайте UIImageView с помощью этого изображения, установите его непрозрачное свойство NO и альфа-свойство для чего-то, что вам хорошо подходит. Добавьте это под просмотр вашего текущего представления. Теперь вам просто нужно добавить индикатор хода вращения, это еще проще, просто создайте новый UIActivityIndicatorView и добавьте его в качестве подзадачи созданного вами UIImageView. Тот же базовый метод используется для создания практически любого изменяемого размера элемента в приложении iOS. Есть несколько примеров использования их для кнопок в примере кода приложения UICatalog от Apple.

5

Я не думаю, что этот снимок экрана является моим DSBezelActivityView; метрики выглядят немного иначе. Но это очень похоже.

Примечание. В DSActivityView и его подклассах не используются изображения или наконечники; они - чистый код.

Чтобы ответить на исходный вопрос, было бы легко изменить DSBezelActivityView, чтобы опустить полноэкранный серый фон. Вы можете сделать это с помощью подклассов и переопределения метода -setupBackground таким образом:

- (void)setupBackground; 
{ 
    [super setupBackground]; 

    self.backgroundColor = [UIColor clearColor]; 
} 

Надеется, что это помогает!

19

Вот что я использую, когда хочу показать такие индикаторы.

UIView *loading = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)]; 

loading.layer.cornerRadius = 15; 
loading.opaque = NO; 
loading.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f]; 

UILabel *loadLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 25, 81, 22)]; 

loadLabel.text = @"Loading"; 
loadLabel.font = [UIFont boldSystemFontOfSize:18.0f]; 
loadLabel.textAlignment = UITextAlignmentCenter; 
loadLabel.textColor = [UIColor colorWithWhite:1.0f alpha:1.0f]; 
loadLabel.backgroundColor = [UIColor clearColor]; 

[loading addSubview:loadLabel]; 
[loadLabel release]; 

UIActivityIndicatorView *spinning = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
spinning.frame = CGRectMake(42, 54, 37, 37); 
[spinning startAnimating]; 

[loading addSubview:spinning]; 
[spinning release]; 

loading.frame = CGRectMake(100, 200, 120, 120); 

Затем вы просто добавляете «загрузочный» вид на ваш выбор, и вы его получили.

Надеюсь, это то, что вам нужно.

2

Попробуйте этот простой метод, он хорошо работает для меня ....

UIActivityIndicatorView *activityIndicator= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; 
activityIndicator.layer.cornerRadius = 05; 
activityIndicator.opaque = NO; 
activityIndicator.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f]; 
activityIndicator.center = self.view.center; 
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 
[activityIndicator setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]]; 
[self.view addSubview: activityIndicator]; 
Смежные вопросы