ios - 如何在将 xib 文件添加到 ViewController 时从右边开始动画

标签 ios swift animation

我在点击导航栏右侧按钮中的菜单按钮时从 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/

相关文章:

ios - 处理具有相同签名但参数不同的多个函数的最有效方法

c# - 如何将分隔符添加到 UITabbar ios

objective-c - NSOperation - 强制一个操作动态地等待其他操作

ios - 存储在 NSUserDefaults 中的 NSMutableArray 不会保存数据

iOS 13 在选项卡栏 subview Controller viewWillAppear 不被调用

ios - UIImageView动画后如何清理内存

objective-c - 如何在 iPhone 上将二进制文件转换为 pdf 文件?

swift - 合并/追加两个文件

ios - 做CABeginAnimation时如何正确设置模型

javascript - 与使用 animateMotion 命令时一样,避免转动物体移动