• Stars
    star
    103
  • Rank 333,046 (Top 7 %)
  • Language
    Swift
  • License
    MIT License
  • Created almost 9 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Custom UIStoryBoardSegue with circular animation

OHCircleSegue

Custom UIStoryBoardSegue with circular transition/animation

Demo

Installation

Manual

Drag the OHCircleSegue.swift class into you project and you're done.

Usage

    1. In your storyboard, create a segue between two view controllers
    1. 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)

Usage 1

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

UIButton example

Starting the transition from a UIButton (note that this will aslo work for other UIKit components as long as user interactions are enabled).

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

License

OHCircleSegue is available under the MIT license. See the LICENSE.md file for more info.