2012-04-14 11 views
16

Quindi, quando un utente fa clic su un pulsante nella mia app, vorrei creare una nuova vista con un indicatore di attività e coprire l'intero schermo con esso fino al termine dell'azione del pulsante.Come rendere la visualizzazione dell'indicatore di attività l'intera schermata?

Tuttavia, la mia attività di indicatore di vista è che copre solo all'interno di una vista tabella, sembra che questo:

enter image description here

come farlo coprire tutto lo schermo? Compreso il controller di navigazione e la barra degli strumenti di visualizzazione tabella.

Ecco il mio codice che uso per creare la vista:

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]; 

risposta

21

Change

[self.tableView addSubview:self.overlayView]; 

Per

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

Impostare rect della sovrapposizione di conseguenza.

+2

+1 in quanto questo sarà anche ruotare correttamente (soluzione di shabzco non lo faranno). – Till

+0

@CodaFi Grazie, ha funzionato. Ma come posso rimuovere la vista? Ora quando faccio [self.activityIndicator removeFromSuperview]; [self.overlayView removeFromSuperview]; non funziona –

+1

Ho aggiunto la mia vista overlay con un tag: overlayView.tag = 1; quindi ho utilizzato il tag per identificare l'overlay per rimuoverlo: [[self.navigationController.view viewWithTag: 1] removeFromSuperview]; – JanB

5

fare questo:

[[UIApplication sharedApplication].keyWindow addSubview:self.overlayView]; 
Problemi correlati