Custom UIStoryBoardSegue with circular transition/animation
Drag the OHCircleSegue.swift class into you project and you're done.
-
- In your storyboard, create a segue between two view controllers
-
- Go to the attributes inspector for the newly created segue and set it up like shown below (note that 'Kind' can be set to anything)
-
- Repeat step 1 and 2 for the unwind segue
In this example, the performSegueWithIdentifier method is called from touchesBegan. To determine where on the screen animation should originate from, override the prepareForSegue function:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// sender object is an instance of UITouch in this case
let touch = sender as! UITouch
// Access the circleOrigin property and assign preferred CGPoint
(segue as! OHCircleSegue).circleOrigin = touch.locationInView(view)
}
Starting the transition from a UIButton (note that this will aslo work for other UIKit components as long as user interactions are enabled).
- Add a button the view controller you want to transition from and hook it up with an IBAction like shown below
@IBAction func buttonTapped(sender: AnyObject) {
// Call method to perform our OHCircleSegue, using our button as the sender
performSegueWithIdentifier("Segue", sender: sender)
}
- In the prepareForSegue method, unwrap the button and use it to determine the origin of our transition
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// No problem to force unwrap in this case, since we know sender is an instance of UIButton
let button = sender as! UIButton
// Set the circleOrigin property of the segue to the center of the button
(segue as! OHCircleSegue).circleOrigin = button.center
}
OHCircleSegue is available under the MIT license. See the LICENSE.md file for more info.