Benutzerdefinierter Übergang für Push-Animation mit NavigationController auf iOS 9

8

Ich habe einen benutzerdefinierten Push-Übergang zwischen View-Controllern, die in einem UINavigationController eingebettet sind, was mit iOS 7/8 funktioniert, aber ein falsches Layout aufweist, wenn es mit iOS 9 SDK erstellt wird.

%Vor%

Es geht dann weiter und führt eine Animation durch. Das Problem ist, dass der Inhalt von toViewController den Inhalt hinter der Navigationsleiste darstellt, auch wenn er die automatische Layout-Beschränkung des oberen Layouts verwendet.

Nichtsdestotrotz funktioniert es auf iOS 8 gut und wenn wir ein Neuzeichnen erzwingen (zB das Senden der App an den Hintergrund und das Zurückbringen, ein Modal oben anzeigen und es ablehnen usw.), wird das gesamte automatische Layoutsystem dazu führen Redraw selbst und toViewController 's Ansicht springt an die richtige Stelle (als die oberste Layout-Anleitung, x Pixel aus der Navigationsleiste statt x Pixel vom oberen Rand des Geräts Bildschirm).

Hinzufügen

%Vor%

Funktioniert in viewDidAppear:animated , funktioniert aber nicht in viewDidLoad oder viewWillAppear:animated . Dies ist keine Lösung, da die Benutzer die Ansicht springen sehen würden, wenn die Neuzeichnung bei viewDidAppear:animated

stattfindet     
Edgar 24.09.2015, 10:43
quelle

1 Antwort

22

Ich habe es geschafft, mein Problem zu beheben, indem ich die folgende Zeile vor addSubview: :

hinzufüge %Vor%

Aus der Apple Dokumentation für finalFrameForViewController :

  

Gibt das End-Frame-Rechteck für den angegebenen View-Controller zurück   sehen.

     

Das von dieser Methode zurückgegebene Rechteck repräsentiert die Größe   der entsprechenden Ansicht am Ende des Übergangs. Für die Aussicht   während der Präsentation abgedeckt wird, der Wert zurückgegeben von diesem   Methode könnte CGRectZero sein, aber es könnte auch ein gültiger Frame sein   Rechteck.

    
Edgar 24.09.2015, 11:38
quelle