iOS Segue - Left to Right -

前端 未结 11 997
旧巷少年郎
旧巷少年郎 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:09

    This is how I achieve the effect without requiring a nav-controller. Try this instead:

    Swift 4:

    import UIKit
    class SegueFromLeft: UIStoryboardSegue {
        override func perform() {
            let src = self.source
            let dst = self.destination
    
            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: .curveEaseInOut,
                             animations: {
                                    dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
                                    },
                            completion: { finished in
                                    src.present(dst, animated: false, completion: nil)
                                        }
                            )
        }
    }
    

    Swift 3:

    import UIKit
    
    class SegueFromLeft: UIStoryboardSegue
    {
        override func perform()
        {
            let src = self.sourceViewController
            let dst = self.destinationViewController
    
            src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
            dst.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width, 0)
    
            UIView.animateWithDuration(0.25,
                delay: 0.0,
                options: UIViewAnimationOptions.CurveEaseInOut,
                animations: {
                    dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
                },
                completion: { finished in
                    src.presentViewController(dst, animated: false, completion: nil)
                }
            )
        }
    }
    

    Then in the storyboard, click on the segue you'd like to change. In the attributes inspector change the type to 'Custom' and change the class to 'SegueFromLeft'

提交回复
热议问题