Skip to content

Instantly share code, notes, and snippets.

@omerfarukz
Created December 30, 2016 19:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save omerfarukz/5dd6479eb5db3e3c43ed82a7594749fb to your computer and use it in GitHub Desktop.
Save omerfarukz/5dd6479eb5db3e3c43ed82a7594749fb to your computer and use it in GitHub Desktop.
import UIKit
class MySegueBase: UIStoryboardSegue
{
open func getDestinationFromPosition(viewFrameSize : CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 2*source.view.frame.size.width, y: 0);
}
open func getSourceTargetPositon(viewFrameSize : CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: -viewFrameSize.width, y: 0);
}
override func perform()
{
let src = self.source
let dst = self.destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = self.getDestinationFromPosition(viewFrameSize: src.view.frame.size);
UIView.animate(
withDuration: 0.4,
delay: 0.0,
options: UIViewAnimationOptions.curveEaseIn,
animations: {
dst.view.transform = CGAffineTransform(translationX:0, y:0)
src.view.transform = self.getSourceTargetPositon(viewFrameSize: src.view.frame.size)
},
completion: { finished in
src.present(dst, animated: false, completion: nil)
}
)
}
}
class SegueFromRight: MySegueBase {}
class SegueFromLeft: MySegueBase
{
override func getDestinationFromPosition(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: -viewFrameSize.width, y: 0);
}
override func getSourceTargetPositon(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 2*viewFrameSize.width, y: 0);
}
}
class SegueFromDown: MySegueBase
{
override func getDestinationFromPosition(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 0, y: 2*viewFrameSize.height);
}
override func getSourceTargetPositon(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 0, y: -viewFrameSize.height);
}
}
class SegueFromUp: MySegueBase
{
override func getDestinationFromPosition(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 0, y: -viewFrameSize.height);
}
override func getSourceTargetPositon(viewFrameSize: CGSize!) -> CGAffineTransform {
return CGAffineTransform(translationX: 0, y: 2*viewFrameSize.height);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment