Ios swift中视图控制器的三维翻转动画
我正在尝试在视图控制器之间获得这样的3d翻转动画Ios swift中视图控制器的三维翻转动画,ios,git,animation,swift2,viewcontroller,Ios,Git,Animation,Swift2,Viewcontroller,我正在尝试在视图控制器之间获得这样的3d翻转动画 https://github.com/nicklockwood/CubeController 对于动画。。根据反向值,我设置时钟方向或反时钟方向 这是我用于动画的代码 class CusNavAnimController : NSObject, UIViewControllerAnimatedTransitioning { var reverse: Bool = false func transitionDuration(t
https://github.com/nicklockwood/CubeController
对于动画。。根据反向值,我设置时钟方向或反时钟方向
这是我用于动画的代码
class CusNavAnimController : NSObject, UIViewControllerAnimatedTransitioning {
var reverse: Bool = false
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
return 0.25
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toView = toViewController.view
let fromView = fromViewController.view
//
toView.frame = UIScreen.mainScreen().bounds
fromView.frame = UIScreen.mainScreen().bounds
let direction: CGFloat = reverse ? -1 : 1
let const: CGFloat = -0.005
toView.layer.anchorPoint = CGPointMake(direction == 1 ? 0 : 1, 0.5)
fromView.layer.anchorPoint = CGPointMake(direction == 1 ? 1 : 0, 0.5)
var viewFromTransform: CATransform3D = CATransform3DMakeRotation(direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0)
var viewToTransform: CATransform3D = CATransform3DMakeRotation(-direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0)
viewFromTransform.m34 = const
viewToTransform.m34 = const
containerView!.transform = CGAffineTransformMakeTranslation(direction * containerView!.frame.size.width / 2.0, 0)
toView.layer.transform = viewToTransform
containerView!.addSubview(toView)
UIView.animateWithDuration(transitionDuration(transitionContext), animations: {
containerView!.transform = CGAffineTransformMakeTranslation(-direction * containerView!.frame.size.width / 2.0, 0)
fromView.layer.transform = viewFromTransform
toView.layer.transform = CATransform3DIdentity
}, completion: {
finished in
containerView!.transform = CGAffineTransformIdentity
fromView.layer.transform = CATransform3DIdentity
toView.layer.transform = CATransform3DIdentity
fromView.layer.anchorPoint = CGPointMake(0.5, 0.5)
toView.layer.anchorPoint = CGPointMake(0.5, 0.5)
if (transitionContext.transitionWasCancelled()) {
toView.removeFromSuperview()
} else {
fromView.removeFromSuperview()
}
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
})
}}
我得到的动画,但它是不一样的git枢纽链接提供。。
对于我的代码。。fromview稍微向后移动,toview从该点向前移动。。是否有人可以建议我更改查看中的
TransitionFlipFromLeft
和TransitionFlipFromRight
,我是否可以使用TransitionFlipFromLeft和TransitionFlipFromRight获得视图控制器转换的3d效果。。你能告诉我在哪里添加它吗?你用它来翻转视图,而不是视图控制器。在希望动画发生的位置执行以下操作:[UIView转换从视图:第一视图到视图:第二视图持续时间:1.0选项:UIViewAnimationOption转换FlipFromLeft完成:nil]
它将翻转,但翻转时应采用3d方式,我如何设置输出应为这样,盒子外没有类似的东西。你要么使用你自己的,要么使用CubeControl类。这非常有效。