Dies verwendet dann eine ganz neue Datei, um die neueMyCustomSegue
Klasse; Ich habe diese Datei eher kreativ MyCustomSegue genannt.swift , das von UIStoryboardSegue
erbt.
Die Aktion des Segues wird nun in der Funktion perform with is overridden . override func perform()
Nehmen wir perform()
Schritt für Schritt. Um die Kontrolle über den Übergang zu erlangen, setzen wir MyCustomSegue
auf transitioningDelegate
. An der Spitze der Klasse befindet sich eine beibehaltene Referenz private var selfRetainer: MyCustomerSegue? = nil
, die erforderlich ist, da UIKit
keine Instanzen von UIStoryboardSegue
sodass eine starke Referenz auf dieselbe erstellt wird. Der Präsentationsstil wird auf .fullScreen
gesetzt, um den ursprünglichen View Controller zu ersetzen.
Die transitioningDelegate
bietet Methoden, die für die Präsentation und Entlassung arbeiten. Wir werden zwei Klassen vorstellen, Presenter
und Dismisser
um mit denen umzugehen, die sie annehmen UIViewControllerAnimatedTransitioning
und NSObject
.
Der Presenter ist recht einfach zu schreiben.
Hier haben wir den Moderator des Protokolls mit den Funktionen func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
und func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
.
Die erstere ist einfach eine Zeit, 1.5 ist eine ziemlich schöne Zeitspanne für diese Fade-Animation.
Der Buchstabe ist die Animation; Die Überblendung erfolgt also für den darstellenden Ansichts-Controller von durchscheinend bis undurchsichtig (dh 0,0 bis 1,0).
Was ist das? Sie wollen einen Spielplatz mit allem, was enthalten? Ich gebe dir das dann:
Besser wird ein ganzes Repo mit der Arbeit daran sein. OK, das ist am Ende dieser Seite.
Fazit
Segues sind nicht so einfach, wie man denkt, aber sie ermöglichen es Ihnen, die Reise des Benutzers durch Ihre App zu animieren und Daten zu übertragen.
Wer würde das nicht wollen?
Ich hoffe, dieser Leitfaden hat Ihnen einen Anstoß in die richtige Richtung für diese (wenn auch unterhaltsame) Art der Übertragung Ihres Benutzers und seiner Daten in einer App gegeben.