Gibt es eine Möglichkeit, einen Übergangs- / Animationseffekt zu erzielen, während ein vorhandener Viewcontroller als Rootviewcontroller durch einen neuen im appDelegate ersetzt wird?
objective-c
ios
xcode
cocoa-touch
Jefferson
quelle
quelle
newViewController.view.layoutIfNeeded()
vor dem Animationsblock Probleme mit träge geladenen Elementen behebt.Ich habe das gefunden und funktioniert perfekt:
in Ihrem AppDelegate:
in Ihrer App
Credits:
quelle
Ich poste die schnell umgesetzte Jesus-Antwort. Es nimmt die Kennung von viewcontroller als Argument, lädt aus dem Storyboard den gewünschten ViewController und ändert rootViewController mit Animation.
Swift 3.0 Update:
Swift 2.2 Update:
Danach haben Sie eine sehr einfache Verwendung von überall:
Swift 3.0 Update
quelle
Swift 2
Swift 3, 4, 5
quelle
versuchen Sie es einfach. Funktioniert gut für mich.
BEARBEITEN:
Dieses hier ist besser.
quelle
UIViewAnimationOptionAllowAnimatedContent|UIViewAnimationOptionLayoutSubviews
oder verwenden Sie die erste Version oder eine andere Methode.Um später in der App keine Probleme mit dem Übergang zu haben, ist es gut, die alte Ansicht auch vom Stapel zu löschen
quelle
Die richtige Antwort ist, dass Sie die
rootViewController
in Ihrem Fenster nicht ersetzen müssen . Erstellen Sie stattdessen eine benutzerdefinierte DateiUIViewController
, weisen Sie sie einmal zu, lassen Sie sie jeweils einen untergeordneten Controller anzeigen und ersetzen Sie sie bei Bedarf durch eine Animation. Sie können den folgenden Code als Ausgangspunkt verwenden:Swift 3.0
Und wie Sie es verwenden, ist:
Das obige Beispiel zeigt , dass Sie nisten im
UINavigationController
InnerenFrameViewController
und das funktioniert ganz gut. Dieser Ansatz bietet Ihnen ein hohes Maß an Anpassung und Kontrolle. RufenFrameViewController.display(_)
Sie einfach an, wann immer Sie den Root-Controller in Ihrem Fenster ersetzen möchten, und er erledigt diese Aufgabe für Sie.quelle
Dies ist ein Update für Swift 3, diese Methode sollte sich in Ihrem App-Delegaten befinden und Sie rufen sie von einem beliebigen View-Controller über eine gemeinsam genutzte Instanz des App-Delegaten auf
Der Teil, der in verschiedenen Fragen oben fehlt, ist
Hoffe das hilft jemandem.
quelle
in AppDelegate.h:
in Ihrem Controller:
quelle
Ich schlage meinen Weg vor, der in meinem Projekt gut funktioniert, und er bietet mir gute Animationen. Ich habe andere Vorschläge in diesem Beitrag getestet, aber einige davon funktionieren nicht wie erwartet.
quelle
Schöne süße Animation (getestet mit Swift 4.x):
Rufen Sie an mit
quelle