2016-10-24 4 views
3

Was ist der beste Weg, um ein benutzerdefiniertes Segment, dass ich eine Taste drücken kann und dann eine Ansicht Controller Folien ermöglicht. Ich habe einen Übergang von links nach rechts geschaffen, aber ich möchte, dass es in die andere Richtung geht. Ich habe mir Youtube Videos angesehen und this question aber sie zeigen mir nicht was ich will.Benutzerdefinierte Folie Segue - Xcode 8.0 Swift 3.0

Mein Code:

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) 
      } 
     ) 
    } 
} 

Grundsätzlich möchte ich einen Übergang zu schaffen, die von rechts nach links geht.

Dank

Ich bin mit Xcode 8.0 und Swift 3.0

+0

es Ihnen gelungen, dies zu tun? Hast du meine Antwort versucht? –

Antwort

4

Try this:

class SegueFromLeft: UIStoryboardSegue{ 
    override func perform(){ 
     let src=sourceViewController 
     let dst=destinationViewController 
     let slide_view=destinationViewController.view 

     src.view.addSubview(slide_view) 
     slide_view.transform=CGAffineTransform.init(translationX: src.view.frame.size.width, 0) 

     UIView.animateWithDuration(0.25, 
      delay: 0.0, 
      options: UIViewAnimationOptions.CurveEaseInOut, 
      animations: { 
       slide_view.transform=CGAffineTransform.identity 
     }, completion: {finished in 
       src.present(dst, animated: false, completion: nil) 
       slide_view.removeFromSuperview() 
     }) 
    } 
} 
0

Swift 3.1:

class ProceedToAppStoryboardSegue: UIStoryboardSegue { 

    override func perform(){ 

     let slideView = destination.view 

     source.view.addSubview(slideView!) 
     slideView?.transform = CGAffineTransform(translationX: source.view.frame.size.width, y: 0) 

     UIView.animate(withDuration: 0.25, 
           delay: 0.0, 
           options: UIViewAnimationOptions.curveEaseInOut, 
           animations: { 
           slideView?.transform = CGAffineTransform.identity 
     }, completion: { finished in 

      self.source.present(self.destination, animated: false, completion: nil) 
      slideView?.removeFromSuperview() 
     }) 
    } 
} 
Verwandte Themen