2016-06-07 12 views
0

Meine Frage sollte einfach sein, aber ich konnte keine Lösung finden.iOS dim Hintergrund Vollbild anzeigen

Ich zeige modales VC an und ich möchte dunkle Hintergrundansicht anfügen.

Modal VC wird als untergeordnetes Element zum übergeordneten VC hinzugefügt. Übergeordneter VC wird oben im Navigationscontroller platziert (topViewController)

Die Dim-Ansicht wird zum Fenster UIScreen.windows.first! hinzugefügt. Aber die dunkle Ansicht füllt nicht den ganzen Bildschirm aus. Ich setze den Rahmen dafür mit CGPointZero für den Ursprung, ich versuchte negativen y-Wert, es hat nicht geholfen. Es sieht einfach so aus. Auch ich habe Satz von Auto-Layout-Einschränkungen hinzugefügt, auf false/true translatesAutoresizingMaskIntoConstraints Eigenschaft festgelegt, geändert clipToBounds.

Nichts hilft, die Dim-Ansicht deckt nicht den gesamten Bildschirm ab.

Wrong display of dim view

Ich kann in vollem Umfang nutzt die dim Ansicht anzuzeigen, wenn ich als Kind modal VC nicht stimmen, das heißt es es direkt modaler Ansicht des VC nutzen, und fügen Sie die window. Es sieht gut aus, aber es gibt einen weiteren Fehler. Deshalb füge ich Modal VC als Kind VC hinzu. So erzwingen Sie die Dim-Ansicht, um den gesamten Bildschirm anzuzeigen.

In der App können mehrere modale VC gleichzeitig angezeigt werden, weshalb Seques (d. H. Präsentation von VCs) nicht die beste Wahl ist.

enter image description here

P. S. Hier ist die Beschreibung des Fehlers:

. Im Fall des Hinzufügens einer modalen VC (UITableVC platziert in Nav. Controller) Ansicht direkt in das Fenster zeigt die Ansicht eine verschobene Tabelle, nach der Rückkehr von BG, dh im Falle dass sie in BG ist und anfängt Modal VC von BG anzuzeigen danach Wenn zurück zu Foreground gewechselt wird, wird ein Teil des Headers der Tabelle (Frage ist enthüllt) nach oben verschoben und die Navigationsleiste von Modal VC wird erweitert, dh sie schneiden sich, der Header der Tabelle wird nicht vollständig angezeigt. Das konnte ich nicht beheben.

Antwort

0

Legen Sie Ihre Ansicht unter Ansicht der Navigation-Controller:

UIView *dimView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
dimView.backgroundColor = [UIColor colorWithWhite:.4f alpha:.5f]; 
[self.navigationController.view addSubview:dimView]; 
[self.navigationController.view bringSubviewToFront:dimView];