iOS benutzerdefinierte Übergänge und Rotation

8

Ich verwende benutzerdefinierte Übergänge, um eine modale Game-Vollbildansicht anzuzeigen. Wenn der Benutzer ein Spiel startet, verkleinert sich der Root-View-Controller auf den Bildschirm, während der Vollbild-Game-View-Controller beim Übergang von 0% Deckkraft auf 100% Deckkraft von einem größeren Maßstab auf das Display herunter zoomt. Einfach!

Der Übergang sieht gut aus und funktioniert gut. Außerdem wird die Animation beim Verwerfen des Game View Controllers korrekt umgekehrt.

Das Problem, das ich habe, ist, dass, wenn das Gerät gedreht wird während der Vollbild-Game-View-Controller angezeigt wird , beim Zurückkehren zum Root-View-Controller ist das Layout alle verrückt. Und eine weitere Rotation behebt das Problem nicht, das Layout ist verrückt und bleibt verschraubt.

Wenn ich die Verwendung eines benutzerdefinierten Übergangs deaktiviere, ist dieses Problem verschwunden. Wenn ich den benutzerdefinierten Übergang beibehalten habe, aber Aufrufe deaktivieren, die ein CATransform3D-Element in der Quell- und Zielansicht in der Übergangsanimation festlegen, verschwindet das Problem wieder.

Hier ist mein Übergang Delegate:

%Vor%

Und zur visuellen Referenz sieht mein Root-View-Controller normalerweise so aus:

Und zum visuellen Nachschlagen, so sieht mein Root-View-Controller aus, wenn ich mein Gerät (mindestens einmal) in der Spielansicht rotiere und zum Root-View-Controller zurückkehre.

Und eine letzte Anmerkung - nur für den Fall, dass es klingelt - verwende ich Auto-Layout- und Größenklassen, um meinen Root-View-Controller zu erstellen.

Danke,

    
TomorrowPlusX 12.08.2015, 15:27
quelle

3 Antworten

4

Ich habe dies aus Versehen herausgefunden, während ich manuellen Code für Ansichten mit nicht-identischen Transformationen gemacht habe. Wenn Ihre Ansicht eine Transformation ohne Identität aufweist, schlägt der normale Layoutcode fehl.

Der Fix in meinem Transitions-Delegaten war, die transite-out-Ansicht zu übernehmen, und in der Animation den vollständigen Callback, setze seine Transformation auf Identität (da diese Ansicht am Ende der Animation unsichtbar ist und hinter der neuen Ansicht keine Auswirkung auf das Aussehen)

%Vor%     
TomorrowPlusX 18.08.2015, 03:39
quelle
25

Ich hatte ein ähnliches Problem, ich hatte einen benutzerdefinierten Übergang für Push und Pop auf einem Navigationscontroller geschrieben. Wenn du das Gerät nach einem Push gedreht hast, als du zum Root-View-Controller zurückgekehrt bist, wäre der Frame unverändert.

Problem

Lösung

Ziel C

%Vor%

Swift 3.0

%Vor%     
agilityvision 27.08.2015 18:06
quelle
1

Endlich habe ich eine Lösung für dieses Problem gefunden. Sie müssen den @agilityvision-Code verbessern. Sie müssen einen BOOL-Wert hinzufügen, etwas wie closeVCNow, das anzeigt, dass Sie VC schließen wollen, und in animateTransition: , im Animationsblock tun Sie das:

%Vor%     
daleijn 03.02.2016 16:42
quelle