我在点击导航栏右侧按钮中的菜单按钮时从 xib
添加了一个 View ,我的问题是这个 View 是从左到右出现的,但我希望它出现从右到左。
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)
})
最佳答案
呃..首先.
新建一个名为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)
最后,创建您自己的动画师。 :)
关于ios - 如何在将 xib 文件添加到 ViewController 时从右边开始动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312896/