2012-04-14 2 views
16

Итак, когда пользователь нажимает на кнопку в моем приложении, я хотел бы создать новое представление с индикатором активности и покрыть весь экран, пока действие кнопки не закончится.Как сделать мой экран индикатора активности всего экрана?

Однако моя деятельность вид индикатора покрывает только внутри представления таблицы, это выглядит следующим образом:

enter image description here

Как сделать это покрыть весь экран? Включая панель навигации и панель инструментов таблицы.

Вот мой код я использую для создания представления:

self.overlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
self.overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
self.activityIndicator.center = self.overlayView.center; 
[self.overlayView addSubview:self.activityIndicator]; 
[self.activityIndicator startAnimating]; 
[self.tableView addSubview:self.overlayView]; 

ответ

21

Изменения

[self.tableView addSubview:self.overlayView]; 

Для

[self.navigationController.view addSubview:self.overlayView]; 

Установите прямоугольник наложения соответственно.

+2

+1, как это также будет вращаться должным образом (решение shabzco не будет). – Till

+0

@CodaFi Спасибо, это сработало. Но как я могу удалить представление? Теперь, когда я [self.activityIndicator removeFromSuperview]; [self.overlayView removeFromSuperview]; он не работает. –

+1

Я добавил свой оверлейный вид с тегом: overlayView.tag = 1, а затем использовал тег для идентификации наложения, чтобы удалить его: [[self.navigationController.view viewWithTag: 1] removeFromSuperview]; – JanB

5

ли это:

[[UIApplication sharedApplication].keyWindow addSubview:self.overlayView]; 
Смежные вопросы