Ich habe versucht, herauszufinden, wie die Dauer von dismissViewControllerAnimated(true, completion: nil)
zu erhöhen, aber nicht scheint, eine Antwort in Apples documentation zu finden. Mein View-Controller wird mit einer Animation von unten nach oben angezeigt und verhält sich in umgekehrter Reihenfolge, wenn er ausgeblendet wird. Ich möchte, dass die Animation langsamer ist, sagen wir 0,5 Sekunden, irgendwelche Vorschläge?Dauer erhöhen von disappearViewControllerAnimated()
Antwort
Sie individuelle Übergänge für Ihre View-Controller verwenden. Bitte haben Sie einen Blick auf diese wunderbare Tutorial zum Einstieg: http://www.appcoda.com/custom-view-controller-transitions-tutorial/
den Hauptcode hier im Falle Link Hinzufügen in Zukunft entfernt wird:
Erstellen Sie eine neue Klasse namens CustomPresentAnimationController
und es eine Unterklasse von NSObject
machen. Klasse CustomPresentAnimationController: NSObject, UIViewControllerAnimatedTransitioning
UIViewControllerAnimatedTransitioning
Protokoll verfügt über zwei erforderliche Methoden, die wir als nächstes hinzufügen werden. Fügen Sie der Klasse die folgenden Methoden hinzu.
func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return 2.5
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let finalFrameForVC = transitionContext.finalFrameForViewController(toViewController)
let containerView = transitionContext.containerView()
let bounds = UIScreen.mainScreen().bounds
toViewController.view.frame = CGRectOffset(finalFrameForVC, 0, bounds.size.height)
containerView.addSubview(toViewController.view)
UIView.animateWithDuration(transitionDuration(transitionContext), delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: .CurveLinear, animations: {
fromViewController.view.alpha = 0.5
toViewController.view.frame = finalFrameForVC
}, completion: {
finished in
transitionContext.completeTransition(true)
fromViewController.view.alpha = 1.0
})}
Nachdem der Animationscontroller abgeschlossen ist, müssen wir ihn mit einem Storyboard-Segment verknüpfen. Öffnen Sie die Datei ItemsTableViewController.swift
und ändern Sie die Klassendeklaration wie gezeigt.
class ItemsTableViewController: UITableViewController, UIViewControllerTransitioningDelegate {
Fügen Sie diese innerhalb dieser Klasse segue zu handhaben:
let customPresentAnimationController = CustomPresentAnimationController()
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showAction" {
let toViewController = segue.destinationViewController as UIViewController
toViewController.transitioningDelegate = self
}
}
Fügen Sie die folgende UIViewControllerTransitioningDelegate
Methode zur Klasse. Dadurch wird die Instanz unseres benutzerdefinierten Animations-Controllers zurückgegeben.
func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return customPresentAnimationController
}
Alle Gutschriften an den ursprünglichen Autor des Artikels.
Man könnte so etwas wie dies versuchen:
CATransaction.begin()
CATransaction.setAnimationDuration(2.0)
dismissViewControllerAnimated(true, completion: nil)
CATransaction.commit()
- 1. VideoView-Dauer
- 2. Dauer Objektdefinition
- 3. mahout recommender Eingabeparameter erhöhen
- 4. Berechne die Dauer und die Dauer des Mitarbeiters
- 5. Dauer vbscript (vbs) Funktion
- 6. (((Akkuladung = 0)/Dauer))
- 7. Span vs Dauer
- 8. Erhalten `Dauer` von` Zeitraum` und `LocalDate`
- 9. Dauer während der Wiedergabe von PlaylistItems zurückgegeben?
- 10. Storyboard Dauer Abschneiden Animation
- 11. Touch-Ziel von TextView erhöhen
- 12. Validierung für Semester Dauer
- 13. Android Splash Screen Dauer
- 14. Last.fm API - Track Dauer
- 15. UIPageViewController Übergangsgeschwindigkeit/-dauer?
- 16. ClosedXML negative Dauer
- 17. Echonest :: Song Dauer
- 18. Fiware: Abonnement Dauer
- 19. Dauer der EMMS-Befehlsausführung?
- 20. Dauer der Audiodatei
- 21. Python-Zeit-Dauer-Vergleich
- 22. Dauer der Migration zu HRD?
- 23. Android Widget zur Eingabe Dauer
- 24. Convert JodaTime Dauer in String
- 25. Dauer der Audiodatei ermitteln C#
- 26. Erhalte die Dauer einer Audiodatei
- 27. So erhöhen Sie die Standardschwebedauer von <a> Titelattribut (Tooltip)
- 28. Grafikbreite erhöhen
- 29. Android: Media Player Dauer Ausgabe
- 30. Wählen Sie Datensätze, die Dauer der Startdate und EndDate haben, die nicht von Dauer von bestimmtem Startdatum und EndDate bedeckt
Nein, hat nicht funktioniert. @ Jelly – Percolator
In diesem Fall denke ich, die einzige Lösung ist eine benutzerdefinierte Animation zu implementieren. – Jelly