Ich versuche, einige neue iOS-Programmiermuster zu lernen. Ich habe eine ganze Reihe von UIViewController-Übergangs-APIs gelesen, die in iOS 7 hinzugefügt wurden. Sie sehen cool aus, fühlen sich aber auch ziemlich schwer an für scheinbar einfachere Aufgaben.Den Wert der UIViewController-Übergänge verstehen
Betrachten Sie diesen Anwendungsfall: Ich habe einen benutzerdefinierten Container View-Controller, der "Folien" verwaltet. Es enthält eine Reihe von Dia-View-Controllern, und der Benutzer kann sie durch Tippen auf eine Schaltfläche vorwärts und rückwärts bewegen.
kann ich den Übergang für diese Umsetzung wie folgt:
private func transitionToViewController(viewController: UIViewController, direction: TransitionDirection = .Forward, animated: Bool = true) {
currentViewController.willMove(toParentViewController: nil)
addChildViewController(viewController)
// ... set up frames, other animation prep ...
contentContainerView.addSubview(comingView)
UIView.animate(duration: 0.5, animations: {
// do the animations
}) { (finished) in
leavingView.removeFromSuperview()
self.currentViewController.removeFromParentViewController()
viewController.didMove(toParentViewController: self)
// final clean up
}
}
Wie würden die neueren Übergang APIs dies verbessern? Von dem, was ich verstehe, diese APIs sind noch komplizierter, wenn Sie verwenden Ihre eigenen Container View-Controller rollen (siehe custom-container view controller transitions.
Ist der Wert in dem Übergang APIs vor allem für interaktive Übergänge?
Dank für die Klärung
Ich stimme zu, dass es viele separate Klassen gibt und auf den ersten Blick sieht die API entmutigend aus. Die Dokumentation von Apple umfasst jedoch alle Bässe und die Menge an Code, die Sie für jede dieser Klassen schreiben müssten, um (zum Beispiel) das Verhalten von "UIAlertController" zu replizieren. –