Cómo utilizar Swift para implementar animaciones de cambio personalizadas entre páginas
Primero implemente el controlador para cambiar entre páginas
import UIKit
clase CustomAnimationController: NSObject, UIViewControllerAnimatedTransitioning {
func TransitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return 0.5
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let toViewController = TransitionContext. viewControllerForKey(UITransitionContextToViewControllerKey)
let fromViewController = TransitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)
let finalFrame = TransitionContext.finalFrameForViewController(toViewController!)
let ContainerView = TransitionContext.containerView ()
let screenBounds = UIScreen.mainScreen().bounds
toViewContro www.hbbz08.com ller?.view.frame = CGRectOffset(finalFrame, 0, screenBounds.size.height )
let toViewView = toViewController?.view
containerView.addSubview(toViewView!)
//animación
let duración = self .transitionDuration(transitionContext)
UIView.animateWithDuration(duración, animaciones: {
fromViewController?.view.alpha = 0.5
toViewController?.view.frame = finalFrame
}, finalización: {(Bool terminado) en
fromViewController?.view.alpha = 1.0
transitionContext.completeTransition(true)
})
}
}
Agregar delegado a la clase del controlador de vista
clase FirstViewController: UIViewController,UIViewControllerTransition
ingDelegate
Agregar una propiedad
var customAnimationController:CustomAnimationController
Inicializar
required init(coder aDecoder: NSCoder) {
customAnimationController = CustomAnimationController()
super.init(coder: aDecoder)
}
Especifique delegado como self en la transición antes de cambiar de página
p>anular la función prepareForSegue(segue: UIStoryboardSegue, remitente: AnyObject?) {
//
if segue.identifier == "ShowAuthor" { p>
let toVC = segue.destinationViewController as UIViewController
toVC.transitioningDelegate = self
}
}
Implementar delegado
//MARK: TransitionDelegate
func AnimationControllerForPresentedController (presentado: UIViewController, presentingController presentando: UIViewController, sourceController fuente: UIViewController) -> UIViewControllerAnimatedTransitioning?
}