2016-04-28 3 views
1

ビューコントローラをポップするときに方向を変更したいと思います。以下は私が使用しているコードです。私は右からコントローラーをポップしたい(ちょうど逆の方向にビューコントローラーを押す)が動作しません。徐々に徐々に消えていくだけです。どのようにしてアニメーションを右からフェードアウトさせることができますか?ナビゲーションが表示コントローラをポップするときのアニメーションの方向を変更する方法

let transition = CATransition() 
     transition.duration = 0.3 
     transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) 
     transition.type = kCATransitionFromRight 

     self.navigationController?.view.layer.addAnimation(transition, forKey: nil) 
     self.navigationController?.popToRootViewControllerAnimated(false) 
+0

http://stackoverflow.com/a/34531975/2714702 – Vizllx

+0

これを一度参照http://stackoverflow.com/questions/2215672/how-to-change-the-push-and-pop-animations-in- a-navigation-based-app –

+0

私はこれらの記事を読んだが、kCATransitionFromLeftとkCATransitionFromRightは効果がないようだ。私は自分のコードに何が間違っているのか分かりません。 –

答えて

1

SOLPresentingFunライブラリ

サンプルコードを試してみてください:あなたはナビゲーションコントローラデリゲートとして

self.navigationController?.delegate = self 

をお使いのベースのコントローラを設定し、あなたのことを確認する必要がありもちろん

func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?{ 
    switch operation{ 
    case .Push where toVC.isKindOfClass("Your new View Controller class name"): 
     let animator = SOLSlideTransitionAnimator() 
     animator.appearing = true 
     animator.duration = 0.25 
     animator.edge = .Left //Direction from which you want to slide the new controller in 
     return animator 
    case .Pop where fromVC.isKindOfClass("Your new View Controller class name"): 
     let animator = SOLSlideTransitionAnimator() 
     animator.appearing = false 
     animator.duration = 0.25 
     animator.edge = .Left//Direction to which you want to slide the new controller out 
     return animator 
    } 
    return nil 
    } 

をベースコントローラはUINavigationControllerDelegateを実装します

関連する問題