2012-04-14 20 views
16

Wenn also ein Benutzer auf eine Schaltfläche in meiner App klickt, möchte ich eine neue Ansicht mit einem Aktivitätsindikator erstellen und den gesamten Bildschirm damit abdecken, bis die Schaltfläche Aktion beendet ist.Wie kann ich meine Aktivitätsanzeige auf den gesamten Bildschirm projizieren?

Allerdings ist meine Aktivitätsanzeige Ansicht innerhalb einer Tabellenansicht nur bedeckt, es sieht aus wie diese:

enter image description here

Wie es ganzen Bildschirm decken machen? Einschließen des Navigationscontrollers und der Symbolleiste der Tabellenansicht.

Hier ist mein Code verwende ich die Ansicht zu erstellen:

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

Antwort

21

ändern

[self.tableView addSubview:self.overlayView]; 

Um

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

die entsprechend des Overlays Set rect.

+2

+1, da dies auch drehen richtig (shabzco Lösung nicht). – Till

+0

@CodaFi Danke, es hat funktioniert. Aber wie kann ich die Ansicht entfernen? Jetzt, wenn ich [self.activityIndicator removeFromSuperview]; [self.overlayView removeFromSuperview]; es funktioniert nicht. –

+1

Ich habe meine Overlay-Ansicht mit einem Tag versehen: overlayView.tag = 1 und dann das Tag verwendet, um das Overlay zu identifizieren, um es zu entfernen: [[self.navigationController.view viewWithTag: 1] removeFromSuperview]; – JanB

5

tun:

[[UIApplication sharedApplication].keyWindow addSubview:self.overlayView]; 
Verwandte Themen