ImmediateAnimationController 1.1.0

ImmediateAnimationController 1.1.0

Siarhei Ladzeika 维护。



  • Siarhei Ladzeika

ImmediateAnimationController

不进行动画的 UIViewControllerAnimatedTransitioning 对象实现。可用于立即显示一些控制器。

示例

MyViewController 将立即以半透明方式显示,然后根据 animated 标志展示 SomeControllerController。

import ImmediateAnimationController // if used as Cocoapod

class MyViewController: UIViewController, UIViewControllerTransitioningDelegate {

    // MARK: Life cycle
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        
        transitioningDelegate = self
        definesPresentationContext = true
        modalPresentationStyle = .overCurrentContext
        
        if UIDevice.current.userInterfaceIdiom == .pad {
            modalTransitionStyle = .coverVertical
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // MARK: Life cycle
    override func viewDidLoad() {
        super.viewDidLoad()
        view.isOpaque = false
        view.backgroundColor = .clear
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        let controller = SomeControllerController()
        present(controller, animated: animated, completion: nil)
    }
    
    // MARK: - UIViewControllerTransitioningDelegate
    
    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return ImmediateAnimationController.shared
    }
    
    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return ImmediateAnimationController.shared
    }
    
}