Skip to content

Library for smooth animation of images during transitions.

License

Notifications You must be signed in to change notification settings

Maskmale/ImageTransition

 
 

Repository files navigation

ImageTransition

Build Status Cocoapods Carthage compatible Swift Version GitHub codebeat badge

ImageTransition is a library for smooth animation of images during transitions.

Something looks like below:

e.g. UIImageView e.g. UIImageView in UICollectionView
sample_01.gif sample_02.gif

Feature

  • Transition zooming animation like the iOS Photos app and the "Pinterest", and so on
  • Easy to use (conform to ImageTransitionable protocol)
  • Swifty (protocol-oriented)
  • Animation configuration customizable (animation duration, UIView.AnimationOptions)
  • CornerRadius animation (e.g. from a round image to a square Image)

Installation

Carthage

  • Add github "shtnkgm/ImageTransition" to your Cartfile.
  • Run carthage update.

CocoaPods

  • Add pod 'ImageTransition' to your podfile.
  • Run pod update.

Usage

  • Confirm ImageTransitionable protocol
// Source UIViewController
import ImageTransition
extension SourceViewController: ImageTransitionable {
    var imageViewForTransition: UIImageView? {
        return imageView
    }
}
// Destination UIViewController
import ImageTransition
extension DestinationViewController: ImageTransitionable {
    var imageViewForTransition: UIImageView? {
        return imageView
    }
}
  • Set Delegate
    // present / dismiss transition
    @objc private func imageViewDidTapped() {
        let destinationViewController = DestinationViewController.make()
        destinationViewController.transitioningDelegate = ImageTransitionDelegate.shared
        present(destinationViewController, animated: true, completion: nil)
    }

    // push / pop transition
    @objc private func imageViewDidTapped() {
        let destinationViewController = DestinationViewController.make()
        // Set ImageTransitionDelegate.shared to `delegate` property of UINavigationContoller
        navigationController?.delegate = ImageTransitionDelegate.shared
        navigationController?.pushViewController(destinationViewController, animated: true)
    }

Customize

You can customize the configuration of animation.

ImageTransitionDelegate.shared.presentDuration = 0.5
ImageTransitionDelegate.shared.dismissDuration = 0.5
ImageTransitionDelegate.shared.pushDuration = 0.5
ImageTransitionDelegate.shared.popDuration = 0.5
ImageTransitionDelegate.shared.presentAnimationOptions = [.curveLinear]
ImageTransitionDelegate.shared.dismissAnimationOptions = [.curveEaseIn]
ImageTransitionDelegate.shared.pushAnimationOptions = [.curveLinear]
ImageTransitionDelegate.shared.popAnimationOptions = [.curveEaseIn]

Requirements

  • iOS 9.0 or later

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

ImageTransition is released under the MIT license. See LICENSE for details.

About

Library for smooth animation of images during transitions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 91.9%
  • Ruby 4.2%
  • Objective-C 3.9%