ImageTransition
Library for smooth animation of images during transitions.
Install / Use
/learn @shtnkgm/ImageTransitionREADME
ImageTransition
ImageTransition is a library for smooth animation of images during transitions.
Something looks like below:
|e.g. UIImageView|e.g. UIImageView in UICollectionView| |:---:|:---:| |<img src="https://github.com/shtnkgm/ImageTransition/raw/master/docs/assets/sample_01.gif" alt="sample_01.gif" width="200px" /> | <img src="https://github.com/shtnkgm/ImageTransition/raw/master/docs/assets/sample_02.gif" alt="sample_02.gif" width="200px" />|
Feature
- [x] Transition zooming animation like the iOS Photos app and the "Pinterest", and so on
- [x] Easy to use (conform to
ImageTransitionableprotocol) - [x] Swifty (protocol-oriented)
- [x] Animation configuration customizable (animation duration, UIView.AnimationOptions)
- [x] 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
ImageTransitionableprotocol
// 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
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request :D
Author
- @shtnkgm / Shota Nakagami
License
ImageTransition is released under the MIT license. See LICENSE for details.
Related Skills
node-connect
329.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
329.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.2kCommit, push, and open a PR
