如何在向ViewController添加xib文件时从右侧进行动画处理

时间:2016-02-10 10:39:25

标签: ios swift animation

这里我在点击我的导航栏右键菜单按钮时添加xib的视图,我的问题是这个视图是从左到右,但我希望它从右到右左

UIView.animateWithDuration(0.3, animations: { () -> Void in    
navController.navigationBar.frame = CGRectMake(-nibView.frame.width, 20, 
navController.navigationBar.frame.width, 
navController.navigationBar.frame.height)         
nibView.frame = CGRectMake( viewSize.frame.width - nibView.frame.width , 0, 
viewSize.frame.width, viewSize.frame.height)                      
viewSize.addSubview(nibView)
})

1 个答案:

答案 0 :(得分:0)

呃......首先。

创建一个名为Animator的新类并继承NSObject和UIViewControllerAnimatedTransitioning。

然后向该类添加属性:

let animationDuration = 2.0
var operation: UINavigationControllerOperation = .Push

然后实现两个功能:

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

func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
}

然后在你的mainViewController中,扩展名UINavigationCOntrollerDelegate,在viewDidLoad()中实现delegate = self并声明:

let transition = Animator()

在扩展程序中,添加此功能:

func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
   transition.operation = operation
   return transition 
}

在Animator中,实现你的UIViewControllerContextTransitioning。

weak var storedContext: UIViewControllerContextTransitioning?

然后在函数animateTranstion中:

storedContext = transitionContext

let fromVC = transitionContext.viewControllerForKey( UITransitionContextFromViewControllerKey) as! MasterViewController

let toVC = transitionContext.viewControllerForKey( UITransitionContextToViewControllerKey) as! DetailViewController

transitionContext.containerView()?.addSubview(toVC.view)

最后,创建自己的动画师。 :)