Was ich versuche zu tun ist eine benutzerdefinierte Animation von ViewController von der linken Seite schieben. Ich habe meinen benutzerdefinierten Transitionsdelegaten erstellt und stelle meine benutzerdefinierte Animation bereit, und alles funktioniert einwandfrei (neue Ansichtsdias von der linken Seite). Das einzige Problem ist, dass Push-Animation in iOS nicht nur zum Verschieben einer Ansicht von der rechten Seite ist. Der VC, der verdeckt wird, bewegt sich auch leicht in den gleichen Richtungen wie der VC, der gedrückt wird. Außerdem blinkt die Navigationsleiste irgendwie. Ich kann natürlich versuchen, dieses Verhalten nachzuahmen, indem ich rate, wie die Parameter sein sollen (zum Beispiel, wie stark die VC verdeckt ist, bewegt sich auf verschiedenen iPhones), aber vielleicht ist es möglich, die Werte irgendwo zu finden? Hilfe sehr geschätzt.PushViewController Details?
0
A
Antwort
0
Ich würde ein UIViewControllerAnimatedTransitioning Protokoll erstellen Objekt hält,
class CustomHorizontalSlideTransition: NSObject, UIViewControllerAnimatedTransitioning {
var operation: UINavigationControllerOperation = .Push
convenience init(operation: UINavigationControllerOperation) {
self.init()
self.operation = operation
}
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
return 0.5
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
let disappearingVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let appearingVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let bounds = UIScreen.mainScreen().bounds
if self.operation == .Push {
appearingVC.view.frame = CGRectOffset(bounds, -bounds.size.height, 0)
containerView!.addSubview(disappearingVC.view)
containerView!.addSubview(appearingVC.view)
} else {
appearingVC.view.frame = bounds
disappearingVC.view.frame = bounds
containerView!.addSubview(appearingVC.view)
containerView!.addSubview(disappearingVC.view)
}
UIView.animateWithDuration(transitionDuration(transitionContext),
delay: 0.0,
options: UIViewAnimationOptions.CurveEaseInOut,
animations: {() -> Void in
if self.operation == .Push {
appearingVC.view.frame = bounds
} else {
disappearingVC.view.frame = CGRectOffset(bounds, -bounds.size.width, 0)
}
}) { (complete) -> Void in
transitionContext.completeTransition(true)
}
}
}
Dann in Ihrem "From" und "To" Ansicht-Controller, stellen Sie den Delegierten Navigationselbst in Sicht ViewDidAppear
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
navigationController?.delegate = self
}
Die in Beide View-Controller überschreiben Folgendes, um eine Delegate-Methode transitionAnimatedTransition
bereitzustellen und die Protokoll-ständige Instanz für Ihre Animation zurückzugeben
override func transitionAnimatedTransition(operation: UINavigationControllerOperation) -> UIViewControllerAnimatedTransitioning? {
return CustomHorizontalSlideTransition(operation: operation)
}
Verwandte Themen
- 1. pushViewController Problem
- 2. pushViewController Debugging
- 3. pushViewController Speicherzuweisung Problem
- 4. Behält PushViewController den Controller?
- 5. pushViewController keine neue Ansicht
- 6. Iphone Pushviewcontroller lösen
- 7. pushViewController Extrem langsam
- 8. Verwenden von pushViewController nach presentModalViewController
- 9. pushViewController: animiert: innerhalb von ScrollView
- 10. pushViewController funktioniert nicht mit TabbarController
- 11. PushViewController führt zu schwarzem Bildschirm
- 12. Wie man den PushViewController ablehnt?
- 13. iPhone SDK - navController pushViewController - reagiert nicht
- 14. pushViewController funktioniert nicht in swift 3
- 15. UITableView pushViewController Beim Auswählen einer Zeile
- 16. Wie schalte ich Tabs und pushViewController gleichzeitig?
- 17. Zeigen pushviewcontroller Animation aussehen wie presentModalViewController
- 18. iphone - verstecken UITabBar ohne presentModalViewController oder pushViewController
- 19. OBJEKT-C: PushViewController mit UIImage funktioniert nicht
- 20. Pushviewcontroller und UIView Animation ist ungültig
- 21. Karte Lage Details mit Fotos und andere Details
- 22. Magento konfigurierbare Produktwechsel Details einfache Produkte, um Details
- 23. AngularJs, Master-Details Update-Master, wenn Details ändern
- 24. Mehr Details in Ember.js
- 25. Mysql Spalte ändern Details
- 26. Android - Batterienutzung Details
- 27. MP3-Dateiformat Details
- 28. Details von Assembly Version
- 29. Bild // Details zeigt nicht
- 30. Google Place Details Android