ImageTransition
  • December 3, 2023

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


  • Swift Package Manager: https://github.com/shtnkgm/ImageTransition.git
  • Carthage: github "shtnkgm/ImageTransition"
  • CocoaPods: pod "ImageTransition"

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 14.0 or later

GitHub


View Github

#animation #imagetransition #ios #swift
YOU MIGHT ALSO LIKE...
exyte

     

camerakit-ios

CameraKit helps you add reliable camera to your app quickly. Our open source camera platform provides consistent capture results, service ...

HybridCamera

[video width="192" height="416" mp4="https://swiftgit.com/wp-content/uploads/2024/12/68747470733a2f2f7261776769742e636f6d2f7374796c656b69742f696d672f6d61737465722f7669645f6564697465645f325f326d622e676966.mp4"][/video]

TakeASelfie

An iOS framework that uses the front camera, detects your face and takes a selfie. This api opens the front ...

iOS-Depth-Sampler

Code examples of Depth APIs in iOS