2016-04-28 63 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

示例代碼:

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 
    } 

當然,你有你的基本控制器設置爲導航控制器委託

self.navigationController?.delegate = self 

,並確認您的基本控制器實現UINavigationControllerDelegate

相關問題