美文网首页swift学习
ios-push与present转场动画模拟

ios-push与present转场动画模拟

作者: bo_song | 来源:发表于2021-04-12 14:54 被阅读0次

    push模拟present转场动画

    extension UINavigationController{
        func pushViewControllerDownToUp(controller: UIViewController) {
            let transition = CATransition()
            transition.duration = 0.5
            transition.type = CATransitionType.push
            transition.subtype = CATransitionSubtype.fromTop
            transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
            view.window?.layer.add(transition, forKey: kCATransition)
            pushViewController(controller, animated: false)
        }
        func popViewControllerTopToBottom() {
            let transition = CATransition()
            transition.duration = 0.5
            transition.type = CATransitionType.push
            transition.subtype = CATransitionSubtype.fromBottom
            transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
            view.window?.layer.add(transition, forKey: kCATransition)
            popViewController(animated: false)
        }
    }
    

    present模拟push转场动画

    extension UINavigationController{
        func presentViewControllerLeftToRight(controller: UIViewController, completion: (() -> Void)? = nil) {
            let transition = CATransition()
            transition.duration = 0.5
            transition.type = CATransitionType.push
            transition.subtype = CATransitionSubtype.fromRight
            transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
            view.window?.layer.add(transition, forKey: kCATransition)
            present(controller, animated: false, completion: completion)
        }
    
        func presentDismissRightToLeft(completion: (() -> Void)? = nil) {
            let transition = CATransition()
            transition.duration = 0.5
            transition.type = CATransitionType.push
            transition.subtype = CATransitionSubtype.fromLeft
            transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
            view.window?.layer.add(transition, forKey: kCATransition)
            dismiss(animated: false, completion: completion)
        }
    }

    相关文章

      网友评论

        本文标题:ios-push与present转场动画模拟

        本文链接:https://www.haomeiwen.com/subject/zxdxlltx.html