iOS Segue - Left to Right -

前端 未结 11 1000
旧巷少年郎
旧巷少年郎 2020-11-30 20:40

I\'ve read the other posts on segues but none solve my question.

Simply put, my ViewControllers are ordered, like a book. I want backward transitions (

11条回答
  •  情话喂你
    2020-11-30 21:33

    In my case I used to make a sidebar menu...

    I created a new view controller and two customs segues

    TO OPEN THE MENU:

    import Foundation
    import UIKit
    
    class SegueFromLeft: UIStoryboardSegue {
    
      override func perform() {
    
        let src = self.source as UIViewController
        let dst = self.destination as UIViewController
    
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        dst.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)
    
        UIView.animate(withDuration: 0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.curveEaseInOut,
                                   animations: {
                                    dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
        },
                                   completion: { finished in
                                    src.present(dst, animated: false, completion: nil)
        }
        )
    
    }
    
    }
    

    TO CLOSE THE MENU:

    import Foundation
    import UIKit
    
    class SegueFromRight: UIStoryboardSegue {
    
    override func perform() {
    
        let src = self.source as UIViewController
        let dst = self.destination as UIViewController
    
        src.view.superview?.insertSubview(dst.view, belowSubview: src.view)
        src.view.transform = CGAffineTransform(translationX: 0, y: 0)
    
        UIView.animate(withDuration: 0.25,
                                   delay: 0.0,
                                   options: UIViewAnimationOptions.curveEaseInOut,
                                   animations: {
                                    src.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)
        },
                                   completion: { finished in
                                    src.dismiss(animated: false, completion: nil)
        }
        )
    }
    }
    

    I hope it helped you...

提交回复
热议问题