Gemini alternatives and similar libraries
Based on the "Animation" category.
Alternatively, view Gemini alternatives based on common mentions on social networks and blogs.
-
lottie-ios
An iOS library to natively render After Effects vector animations -
IBAnimatable
Design and prototype customized UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable. -
SkeletonView
☠️ An elegant way to show users that something is happening and also prepare them to which contents they are awaiting -
AnimatedCollectionViewLayout
A UICollectionViewLayout subclass that adds custom transitions/animations to the UICollectionView without effecting your existing code. -
Presentation
:bookmark_tabs: Presentation helps you to make tutorials, release notes and animated pages. -
EasyAnimation
A Swift library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level - layers, springs, chain-able animations and mixing view and layer animations together! -
Fluid Slider
:octocat:💧 A slider widget with a popup bubble displaying the precise value selected. Swift UI library made by @Ramotion -
DKChainableAnimationKit
Easy to read and write chainable animations in Swift. -
Sica
:deer: Simple Interface Core Animation. Run type-safe animation sequencially or parallelly -
ChainPageCollectionView
A custom View with fancy collectionView animation -
ZoomTransitioning
ZoomTransitioning provides a custom transition with image zooming animation and swiping the screen edge. -
navigation-toolbar
:octocat: Navigation toolbar is a slide-modeled UI navigation controller made by @Ramotion -
CAROUSEL
List a collection of items in a horizontally scrolling view. A scaling factor controls the size of the items relative to the center. -
FlightAnimator
Advanced Natural Motion Animations, Simple Blocks Based Syntax -
Garland View
:octocat: ≡ GarlandView seamlessly transitions between multiple lists of content. Swift UI library made by @Ramotion -
DSGradientProgressView
A simple animated progress bar in Swift -
SPPerspective
Widgets iOS 14 animation with 3D and dynamic shadow. Customisable transform and duration. -
TheAnimation
Type-safe CAAnimation wrapper. It makes preventing to set wrong type values. -
Walker
Each step you take reveals a new horizon. You have taken the first step today. -
Poi
Poi makes you use card UI like tinder UI .You can use it like tableview method. -
DottedProgressBar
Simple and powerful animated progress bar with dots -
Numbers Animation
Numbers animation allows you to click on different numbers and accordingly it will animate numbers in a cool way. It has a very attractive UI and is very easy to use.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Gemini or a related project?
Popular Comparisons
README
Overview
What is the Gemini
?
Gemini
is rich scroll based animation framework for iOS, written in Swift. You can easily use GeminiCollectionView
, which is a subclass of UICollectionView
.
It enables you to make multiple animation which has various and customizable properties, and moreover can create your own custom scroll animation.
Gemini
also provides a fluent interface based on method chaining. you can use this intuitively and simply.
collectionView.gemini
.circleRotationAnimation()
.radius(400)
.rotateDirection(.clockwise)
Features
- [x] Rich animation with scrolling
- [x] Easily usable
- [x] Highly customizable
- [x] Several types of animations and properties
- [x] Supports vertical and horizontal flow layout
- [x] Supports easing function
- [x] Supports
Swift5.0
- [x] Fluent interfaces based on method chaining
- [x] Compatible with
Carthage
- [x] Compatible with
CocoaPods
- [x] Example project with lots of stock animations
- [x] And More...
Contents
Animation Types and properties
The following animation types are available. See sample code here for details.
- Cube
- Circle Rotation You can configure direction of rotation using the
CircleRotationDirection
- 3D vector rotation Each rotation types provide multiple rotation effect
- Scale
- Custom You can create your own custom scroll animation using multiple properties, rotation, scale, translation, etc.
In addition, you can also customize the following properties for the above animation types.
- BackgroundColor
- CornerRadius
- Alpha
- Easings
- Shadow Effect
Cube
It's a cube animation like Instagram.
If you would like to customize the cube animation, change cubeDegree
.
If cubeDegree
is 90, it moves like a regular hexahedron.
collectionView.gemini
.cubeAnimation()
.cubeDegree(90)
CircleRotation
An animation moves in a circle. You can change circleRadius
and CircleRotationDirection
.
collectionView.gemini
.circleRotationAnimation()
.radius(450) // The radius of the circle
.rotateDirection(.clockwise) // Direction of rotation.
.itemRotationEnabled(true) // Whether the item rotates or not.
3D vector rotation
Available for Roll
, Pitch
and Yaw
animation. These rotation animation are designed based on 3-Dimensional vector. Figure-1 shows direction of rotation based on device.
Figure-1 Pitch, roll, and yaw axes
Reference: Event Handling Guide for UIKit Apps
Roll Rotation
Pitch Rotation
Yaw Rotation
Each types of rotation animation has RotationEffect
(e.g. RollRotationEffect
) and degree of rotation.
Customize RotationEffect
(up
, down
, sineWave
, reverseSineWave
) and degree of rotation.
In the case of rollRotation
, like this:
collectionView.gemini
.rollRotationAnimation()
.degree(45)
.rollEffect(.rollUp)
Scale
The scaleUp
gradually increases frame size, scaleDown
decreases.
collectionView.gemini
.scaleAnimation()
.scale(0.75)
.scaleEffect(.scaleUp) // or .scaleDown
Custom
You can flexibly and easily customize scroll animation. Customize properties of GeminiAnimation.custom
such as scale
, scaleEffect
, rotationAngle
, translation
, easing
, shadowEffect
, alpha
, cornerRadius
, backgroundColor
, anchorPoint
, etc.
The animation of gif is customized in the following way:
collectionView.gemini
.customAnimation()
.translation(y: 50)
.rotationAngle(y: 13)
.ease(.easeOutExpo)
.shadowEffect(.fadeIn)
.maxShadowAlpha(0.3)
Or right side of gifs is customized as follows:
collectionView.gemini
.customAnimation()
.backgroundColor(startColor: lightGreenColor, endColor: lightBlueColor)
.ease(.easeOutSine)
.cornerRadius(75)
There are more sample code at CustomAnimationViewController.swift.
Easing function
Gemini
supports various easing functions based on distance of scroll.
- linear
- easeInQuad
- easeOutQuad
- easeInOutQuad
- easeInCubic
- easeOutCubic
- easeInOutCubic
- easeInQuart
- easeOutQuart
- easeInOutQuart
- easeInQuint
- easeOutQuint
- easeInOutQuint
- easeInSine
- easeOutSine
- easeInOutSine
- easeInExpo
- easeOutExpo
- easeInOutExpo
- easeInCirc
- easeOutCirc
- easeInOutCirc
Shadow effect
Default value is ShadowEffect.none
. Return shadowView
in your custom class, which is a subclass of GeminiCell
.
- fadeIn
- nextFadeIn
- previousFadeIn
- fadeOut
- none
class CustomCollectionViewCell: GeminiCell {
@IBOutlet weak var customShadowView: UIView!
override var shadowView: UIView? {
return customShadowView
}
}
Usage
- Use Gemini classes
Gemini
is designed to be easy to use. Use GeminiCollectionView
and GeminiCell
. These classes is subclass of UICollectionView
, UICollectionViewCell
.
- Configure animation
Configure animation with fluent interface based on method chaining. You can develop expressive code that enhances readability.
- Call function for animation
Finally, call animateVisibleCells()
in scrollViewDidScroll(_:)
NOTE: If you want to adapt animation immediately after view is displayed, call
animateCell(_:)
incollectionView(_:cellForItemAt:)
andcollectionView(_:willDisplay:forItemAt:)
.
// Import Gemini
import Gemini
// Inherite GeminiCell
class CustomCell: GeminiCell {
...
}
// Conform to UICollectionViewDelegate and UICollectionViewDataSource
class CustomViewController: UIViewController: UICollectionViewDelegate, UICollectionViewDataSource {
// Inherite GeminiCollectionView
@IBOutlet weak var collectionView: GeminiCollectionView!
...
// Configure animation and properties
func configureAnimation() {
collectionView.gemini
.circleRotationAnimation()
.radius(400)
.rotateDirection(.clockwise)
}
// Call animation function
func scrollViewDidScroll(_ scrollView: UIScrollView) {
collectionView.animateVisibleCells()
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if let cell = cell as? GeminiCell {
self.collectionView.animateCell(cell)
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
self.collectionView.animateCell(cell)
return cell
}
See Example, for more details.
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
- Xcode 10.2.1
- Swift 5.0
Installation
CocoaPods
Gemini is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "Gemini"
Carthage
Add the following line to your Cartfile
:
github "shoheiyokoyama/Gemini"
Author
Shohei Yokoyama
- GitHub
- Gmail: [email protected]
License
Gemini is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the Gemini README section above
are relevant to that project's source code only.