簡體   English   中英

用於swift中視圖控制器的3D翻轉動畫

[英]3D Flip Animation for View Controllers in swift

我想在這樣的視圖控制器中獲得3d翻轉動畫

    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 hub鏈接不一樣..對於我的代碼.. fromview稍微回頭並從那一點來看到前面..任何人都可以建議我改變

UIViewAnimationOptions中查看TransitionFlipFromLeftTransitionFlipFromRight

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM