• Stars
    star
    205
  • Rank 185,110 (Top 4 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 5 years ago

Reviews

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

Repository Details

Painless custom transitioning. Easy extend, easy setup, just focus on animations.

TransitionManager

Painless custom transitioning. Easy extend, easy setup, just focus on animations.

Installation

CocoaPods

You can use CocoaPods to install TransitionManager by adding it to your Podfile:

platform :ios, '8.0'
use_frameworks!
pod 'TransitionManager'

To get the full benefits import TransitionManager wherever you import UIKit

import UIKit
import TransitionManager

Manually

  1. Download and drop /TransitionManagerfolder in your project.
  2. Congratulations!

Usage

Copy & paste TransitionManager.swift into your project.

  • Declare a TransitionManager object.
  • Init it with a TransitionManagerAnimation
  • Assign it as your navigation controller's delegate if you use navigation controller.
  • Else assign it as your view controller's transitioningDelegate.
	
	var transition: TransitionManager!
	    
	override func viewDidLoad() {
	   super.viewDidLoad()
	   
	   transition = TransitionManager (transitionAnimation: FadeTransitionAnimation())
	   navigationController?.delegate = transition
	}
	

Creating Transition Animations

Create a subclass of TransitionManagerAnimation

	class FadeTransitionAnimation: TransitionManagerAnimation {

	}

TransitionManagerAnimation class implements TransitionManagerDelegate protocol.

TransitionManagerDelegate
protocol TransitionManagerDelegate {

    /// Transition nimation method implementation
    func transition(
        container: UIView,
        fromViewController: UIViewController,
        toViewController: UIViewController,
        isDismissing: Bool,
        duration: NSTimeInterval,
        completion: () -> Void)

    /// Interactive transitions,
    /// update percent in gesture handler
    var interactionTransitionController: UIPercentDrivenInteractiveTransition? { get set }
}

For transition animation, we should override transition func and write our custom animation in it.

class FadeTransitionAnimation: TransitionManagerAnimation {
    override func transition(
        container: UIView,
        fromViewController: UIViewController,
        toViewController: UIViewController,
        isDismissing: Bool,
        duration: NSTimeInterval,
        completion: () -> Void) {
        if isDismissing {
            closeAnimation(container,
                fromViewController: fromViewController,
                toViewController: toViewController,
                duration: duration,
                completion: completion)
        } else {
            openAnimation(container,
                fromViewController: fromViewController,
                toViewController: toViewController,
                duration: duration,
                completion: completion)
        }
    }    
}

One important part is completion() must be called because the TransitionManager finishes transition after it gets called.

Interaction Transition

Interaction transition has 3 parts:

  • Init interactionTransitionController and either pop or push navigation controller when gesture (interaction) starts.
  • Calculate your percents on gesture change and updateInteractiveTransition: with that percent
  • When gesture ended, decide if your transition complete or not and give information to your interactionTransitionController with finishInteractiveTransition () and cancelInteractiveTransition ()

Easier TransitionManager setup

You can create a TransitionManagerAnimation container enum and give it all your animations

	enum TransitionManagerAnimations {
	    case Fade
	    case Pull
	}

Write a func that returns correct transition animation in enum

enum TransitionManagerAnimations {
    case Fade
    case Pull
    
    func transitionAnimation () -> TransitionManagerAnimation {
        switch self {
        case .Fade:
            return FadeTransitionAnimation()
        case .Pull:
            return PullTransitionAnimation()
        }
    }
}

Extend TransitionManager and write a new init method like

extension TransitionManager {
    convenience init(transition: TransitionManagerAnimations) {
        self.init(transitionAnimation: transition.transitionAnimation())
    }
}

Now you can create TransitionManager in your view controller like

transition = TransitionManager(transition: .Pull)
navigationController?.delegate = transition

More Repositories

1

MusicTheory

Universal music theory library for iOS, iPadOS, macOS, tvOS and watchOS in Swift
Swift
398
star
2

CategorySliderView

slider view for choosing categories. add any UIView type as category item view. Fully customisable
Objective-C
352
star
3

PullToRefreshCoreText

PullToRefresh extension for all UIScrollView type classes with animated text drawing style
Objective-C
313
star
4

ReorderableGridView-Swift

reorderable grid view solution implemented with swift. its UIScrollView subclass, its not a collection view layout.
Swift
279
star
5

SlidingContainerViewController

An android scrollable tab bar style container view controller
Swift
219
star
6

MaterialCardView

Create material design cards quick and easy
Swift
219
star
7

StrechyParallaxScrollView

uiscrollview with strechy and parallax top view
Objective-C
207
star
8

BubbleControl-Swift

a bubble control highly inspired from facebook chat heads. written in swift
Swift
178
star
9

ImageFreeCut

A UIView subclass lets you draw a path over an image and crops that part.
Swift
174
star
10

GiFHUD

progress hud for displaying only animated gif images. no labels (for now)
Objective-C
159
star
11

MIDITimeTableView

Customisable and editable time table grid for showing midi or audio related data with a measure.
Swift
120
star
12

DroppyScrollView

Vertical scroll view with abilty to inserting subviews top or any index with stylish dropping animations
Objective-C
118
star
13

KeyboardLayoutEngine

⌨️ The most simple custom keyboard generator for iOS ever!
Swift
103
star
14

ChordDetector

A tiny menu bar app detecting the chords of the songs you are listening on iTunes or Spotify.
Swift
75
star
15

MIDIPianoRollView

Customisable UIScrollView subclass for rendering/editing MIDI notes on a piano roll view.
Swift
74
star
16

GiFHUD-Swift

progress hud for displaying only animated gif images implemented with swift
Swift
69
star
17

Fretboard

Customisable guitar fretboard view for iOS, tvOS and macOS with CoreGraphics
Swift
55
star
18

LiveKnob

Yet another knob for iOS but with IBDesignable and Ableton Live style.
Swift
52
star
19

JSONTableView

Expandable JSON data viewer
Swift
45
star
20

CircleOfFifths

Fully customisable IBDesignable circle of fifths implementation in swift.
Swift
44
star
21

CEMKit-Swift

UIKit & Foundation toolbelt for quick prototyping and rapid development
Swift
40
star
22

SizeClasser

Device specific UITraitCollection helper with split view detection for iOS.
Ruby
35
star
23

MIDIEventKit

MIDI data structures for Swift. Send MIDI events in human language.
Swift
30
star
24

YSTypingAnimation

customisable "is typing" animation view written in swift.
Swift
29
star
25

AUSequencer

(WIP) MIDI Sequencer Audio Unit
Objective-C++
26
star
26

TVOSPicker

A sweet horizontal picker view controller for tvOS.
Swift
25
star
27

PercentCalculator

A menu bar application that calculates parcents.
Swift
24
star
28

MIDISequencerAUv3

A great start point for making AUv3 MIDI sequencer apps.
Objective-C
24
star
29

GlowingView

A UIView extension adds customisable glow effect based on CALayer shadows.
Ruby
23
star
30

LiveFader

@IBDesignable Horizontal or vertical UIControl subclass that can start from bottom or middle of the control.
Swift
22
star
31

BlockTableView-Swift

single line UITableView creation in Swift with power of the closures
Swift
21
star
32

AIBud

An experimental CreateML project for predicting playing musical key and scale in realtime
Swift
19
star
33

ContinuesTouchCollectionView

A collection view subview for handling multiple continues touches on cells.
Swift
17
star
34

MarchingLayer

Randomly fills layer with sprites and move them in any direction and speed you want.
Swift
17
star
35

CirucularLock

fully custumisable lock control with block based callbacks.
Objective-C
16
star
36

DragMenuPicker

A custom picker lets you pick an option from its auto scrolling menu without lifting your finger up.
Swift
14
star
37

TempoStepper

Fully customisable stepper with auto stepping.
Swift
14
star
38

YSTutorialViewController

Create flat design tutorial pages quickly. It can read page data from json file, no coding required for pages ! Fully customisable.
Objective-C
13
star
39

3DTouchHelper

Easy to use continuous 3D touch gesture recognizer.
Swift
12
star
40

IBDesignableArrowView

Create IBDesignable arrow views in your storyboard!
Swift
12
star
41

DeserializableSwiftGenerator

JSONHelper or ObjectMapper deserializable swift class generator
Swift
12
star
42

MusicTheoryCpp

C++ music theory library
C++
11
star
43

RBEditorViewController

RhythmBud's Editor Code
Swift
10
star
44

Flick

A smart swipe gesture with direction, duration, velocity and force properties.
Swift
9
star
45

LaunchpadKit

Swift API for Novation Launchpad
Swift
9
star
46

CenterTextLayer

Universal CATextLayer subclass that centers its text vertically.
Ruby
9
star
47

ALKit

Easy to use AutoLayout wrapper around NSLayoutConstraints.
Swift
7
star
48

MothersDiceGame

Random synth patch generator iOS app
Swift
7
star
49

BezierCurveEditor

UIBezierPath editor view for iOS.
Swift
6
star
50

ColorPalette

A color palette grid view for iOS.
Swift
6
star
51

StringToPath

String extension for returning UIBezierPath of the string in a font of your choice, using Core Text
Ruby
6
star
52

MotionImageView

An image view lets you move its image with gyro
Swift
6
star
53

WatchActivityIndicator

⌚️ Apple Watch WKInterfaceImage and WKInterfaceGroup extension for showing activity indicators on them quickly.
Swift
6
star
54

CEMKit

handy library for no-xibbers
Objective-C
5
star
55

AirDrawerMenuViewController

legendary airbnb drawer menu in swift
Swift
5
star
56

DroppyMenuController

A swift dropping menu controller.
Swift
5
star
57

DroppyExpandingSectionView

Instead of using UITableView or UICollectionView use this for expand/collapse behaviour. Implementation higly mimics UICollectionView. Its more easy because just waits the headers and their expanding items which are any UIView type object
Objective-C
5
star
58

RECButton

An @IBDesignable record (REC) button for iOS
Ruby
4
star
59

StatusBarTranslator

osx status bar app for translating english to french or vice versa. implemented using yandex translation api in swift
Swift
4
star
60

SlotPickerView

Picker view with multiple ranges for iOS
Swift
3
star
61

OptionButton

IBDesignable option button that have vertical stacked title and option labels for iOS and tvOS.
Ruby
3
star
62

EmojiKeyboard

EmojiKeyboard provides a complete view controller with EmojiCollectionView, EmojiCollectionViewCell and EmojiCollectionViewHeader in style of Apple Emoji Keyboard.
Swift
3
star
63

CurlUI

A tiny mac tool for testing your POST/GET requests.
Swift
2
star
64

Shadow

A simple object for adding/removing shadows from your CALayers or UIViews.
Swift
2
star
65

RadyoEksen

osx status bar application for radio eksen 96.2 FM, Istanbul
Swift
2
star
66

DurationProgressBar

UIView based progress bar that shows the duration in seconds
Swift
2
star
67

Blogs

Repo that host my blog posts about iOS and Swift
2
star
68

ImageSequance

Universal image sequance animation library for iOS, tvOS, macOS and watchOS.
Ruby
2
star
69

XYPad

A quick and easy xy-pad control for iOS
Swift
2
star
70

RowyGenerator

an experimental functional UIView generator in swift
Swift
1
star
71

YSCards

under development
Swift
1
star
72

CocosCharacterGenerator

Cocos2d Character Generator Cocoa App
Objective-C
1
star
73

IBDesignableProgressBar

Create flat progress bars directly from storyboard.
Swift
1
star
74

Hoopscore

Free and open source app for keeping score of your basketball practices
Swift
1
star
75

AutoScroller

Display custom "scroll to top" or "scroll to bottom" views in all UIScrollView instances while they are scrolling
Swift
1
star
76

SoundcloudFavoritesDownloader

download your favorites in soundcloud. or listen. or both
JavaScript
1
star
77

cucumber-step-generator

Atom package for generating cucumber step files from feature files
CoffeeScript
1
star
78

dotfiles

zsh, bash, vim and Terminal.app settings
Shell
1
star
79

ColourLoversExtensionGenerator

a status bar app for generating UIColor extension class form colourlovers.com palettes
Objective-C
1
star
80

DictUtils

Adds bunch of extensions and operators that would make working with Dicitonaries easier.
Swift
1
star
81

DSLSwitch

iOS app for controlling Marshall DSL amps
Swift
1
star
82

ProtocolOrientedViewModel

Create universal view's with different layouts for each platform and share the view logic between them.
Swift
1
star