2016-04-05 1 views
1

я пытаюсь получить 3d флипа анимации между контроллерами зрения, как этот3D покадровой анимация для просмотра контроллеров в быстрой

https://github.com/nicklockwood/CubeController 

Для анимации .. на основе обратного значения я устанавливаю по часовой стрелке или против направления тактового направления

Это код, я использую для анимации ..

class CusNavAnimController : NSObject, UIViewControllerAnimatedTransitioning { 

var reverse: Bool = false 

func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval { 

    return 0.25 
} 

func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 

    let containerView = transitionContext.containerView() 

    let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)! 

    let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)! 

    let toView = toViewController.view 

    let fromView = fromViewController.view 

    // 
    toView.frame = UIScreen.mainScreen().bounds 
    fromView.frame = UIScreen.mainScreen().bounds 

    let direction: CGFloat = reverse ? -1 : 1 
    let const: CGFloat = -0.005 

    toView.layer.anchorPoint = CGPointMake(direction == 1 ? 0 : 1, 0.5) 
    fromView.layer.anchorPoint = CGPointMake(direction == 1 ? 1 : 0, 0.5) 

    var viewFromTransform: CATransform3D = CATransform3DMakeRotation(direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0) 
    var viewToTransform: CATransform3D = CATransform3DMakeRotation(-direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0) 

    viewFromTransform.m34 = const 
    viewToTransform.m34 = const 

    containerView!.transform = CGAffineTransformMakeTranslation(direction * containerView!.frame.size.width/2.0, 0) 
    toView.layer.transform = viewToTransform 

    containerView!.addSubview(toView) 

    UIView.animateWithDuration(transitionDuration(transitionContext), animations: { 

     containerView!.transform = CGAffineTransformMakeTranslation(-direction * containerView!.frame.size.width/2.0, 0) 
     fromView.layer.transform = viewFromTransform 
     toView.layer.transform = CATransform3DIdentity 

     }, completion: { 

      finished in 

      containerView!.transform = CGAffineTransformIdentity 
      fromView.layer.transform = CATransform3DIdentity 
      toView.layer.transform = CATransform3DIdentity 
      fromView.layer.anchorPoint = CGPointMake(0.5, 0.5) 
      toView.layer.anchorPoint = CGPointMake(0.5, 0.5) 

      if (transitionContext.transitionWasCancelled()) { 

       toView.removeFromSuperview() 

      } else { 

       fromView.removeFromSuperview() 
      } 

      transitionContext.completeTransition(!transitionContext.transitionWasCancelled()) 
    }) 
}} 

Я получаю анимацию, но это не то же самое, как связь мерзавец хаба, обеспечивающего .. Для моего кода .. fromview немного вернуться и toview приходить на фронт с этой точки .. может кто-нибудь предложить мне изменения

ответ

0

TransitionFlipFromLeft ЗАКАНЧИВАТЬ и TransitionFlipFromRight в UIViewAnimationOptions

+0

Могу ли я получить 3D-эффект для просмотра контроллеров переходов используя TransitionFlipFromLeft, TransitionFlipFromRight .. Можете ли вы сказать мне, где добавить это .. ?? – Sunil

+0

Вы используете его, чтобы перевернуть вид, а не контроллер представления. Сделайте следующее, в котором вы хотите, чтобы анимация произошла: '[UIView transitionFromView: firstView toView: secondView duration: 1.0 options: UIViewAnimationOptionTransitionFlipFromLeft завершение: nil]' – Hash88

+0

Он будет переворачиваться, но при переворачивании он должен быть в 3d-манере, как я могу установить, что это должно быть так: https://github.com/nicklockwood/CubeController – Sunil