Description
Stagehand provides a modern, type-safe API for building animations on iOS. Stagehand is designed around a set of core ideas:
* Composition of Structures
* Separation of Construction and Execution
* Compile-Time Safety
* Testability
Stagehand alternatives and similar libraries
Based on the "Animation" category.
Alternatively, view Stagehand alternatives based on common mentions on social networks and blogs.
-
Pop
An extensible iOS and OS X animation library, useful for physics-based interactions. -
Shimmer
An easy way to add a simple, shimmering effect to any view in an iOS app. -
IBAnimatable
Design and prototype customized UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable. -
Keyframes
A library for converting Adobe AE shape based animations to a data format and play it back on Android and iOS devices. -
JHChainableAnimations
Easy to read and write chainable animations in Objective-C and Swift -
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! -
RZTransitions
A library of custom iOS View Controller Animations and Interactions. -
DKChainableAnimationKit
⭐ Chainable animations in Swift -
CKWaveCollectionViewTransition
Cool wave like transition between two or more UICollectionView -
LSAnimator
⛓ Easy to Read and Write Multi-chain Animations Lib in Objective-C and Swift. -
Popsicle
Delightful, extensible Swift value interpolation framework -
ActivityIndicatorView
A number of preset loading indicators created with SwiftUI -
AnimationEngine
Easily build advanced custom animations on iOS. -
Awesome-iOS-Animation
Curated list of iOS Animation libraries -
DCAnimationKit
A collection of animations for iOS. Simple, just add water animations. -
ZoomTransitioning
ZoomTransitioning provides a custom transition with image zooming animation and swiping the screen edge. -
FlightAnimator
Advanced Natural Motion Animations, Simple Blocks Based Syntax -
AHKBendableView
UIView subclass that bends its edges when its position changes. -
AHDownloadButton
Customizable download button with progress and transition animations. It is based on Apple's App Store download button. -
MotionMachine
A powerful, elegant, and modular animation library for Swift. -
RippleEffectView
RippleEffectView - A Neat Rippling View Effect -
SamuraiTransition
SamuraiTransition is an open source Swift based library providing a collection of ViewController transitions featuring a number of neat “cutting” animations. -
JRMFloatingAnimation
An Objective-C animation library used to create floating image views. -
CCMRadarView
CCMRadarView uses the IBDesignable tools to make an easy customizable radar view with animation -
ConcentricProgressRingView
Fully customizable circular progress bar written in Swift. -
Walker
Each step you take reveals a new horizon. You have taken the first step today. -
SYBlinkAnimationKit
A blink effect animation framework for iOS, written in Swift. -
ADPuzzleAnimation
Inspired by Fabric - Answers animation. Allows to "build" given view with pieces. Allows to "destroy" given view into pieces -
SMSwipeableTabView
Swipeable Views with Tabs (Like Android SwipeView With Tabs Layout)
Appwrite - The open-source backend cloud platform
* 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 Stagehand or a related project?
README
Stagehand
Stagehand provides a modern, type-safe API for building animations on iOS. Stagehand is designed around a set of core ideas:
- Composition of Structures - Stagehand makes it easy to build complex, multi-part animations that are built from small, reusable pieces that are easier to reason about.
- Separation of Construction and Execution - Stagehand provides separate mechanisms for the construction and execution, which increases the flexibility of animations and makes concepts like queuing a series of animations work straight out of the box.
- Compile-Time Safety - Stagehand uses modern Swift features to provide a compile-time safe API for defining animations.
- Testability - Stagehand builds on the concept of snapshot testing to introduce a visual testing paradigm for animations.
Installation
CocoaPods
To install Stagehand via CocoaPods, simply add the following line to your Podfile
:
pod 'Stagehand'
To install StagehandTesting, the animation snapshot testing utilities, add the following line to your test target definition in your Podfile
:
pod 'StagehandTesting'
Swift Package Manager
To install Stagehand via Swift Package Manager, add the following to your Package.swift
:
dependencies: [
.package(url: "https://github.com/cashapp/stagehand", from: "3.0.0"),
],
Getting Started with Stagehand
An animation begins with the construction of an Animation
. An Animation
is generic over a type of element and acts as a definition of how that element should be animated.
As an example, we can write an animation that highlights a view by fading its alpha to 0.8 and back:
var highlightAnimation = Animation<UIView>()
highlightAnimation.addKeyframe(for: \.alpha, at: 0, value: 1)
highlightAnimation.addKeyframe(for: \.alpha, at: 0.5, value: 0.8)
highlightAnimation.addKeyframe(for: \.alpha, at: 1, value: 1)
Let's say we've defined a view, which we'll call BinaryView
, that has two subviews, leftView
and rightView
, and we want to highlight each of the subviews in sequence. We can define an animation for our BinaryView
with two child animations:
var binaryAnimation = Animation<BinaryView>()
binaryAnimation.addChild(highlightAnimation, for: \.leftView, startingAt: 0, relativeDuration: 0.5)
binaryAnimation.addChild(highlightAnimation, for: \.rightView, startingAt: 0.5, relativeDuration: 0.5)
Once we've set up our view and we're ready to execute our animation, we can call the perform
method to start animating:
let view = BinaryView()
// ...
binaryAnimation.perform(on: view)
Running the Demo App
Stagehand ships with a demo app that shows examples of many of the features provided by Stagehand. To run the demo app, open the Example
directory and run:
bundle install
bundle exec pod install
open Stagehand.xcworkspace
From here, you can run the demo app and see a variety of examples for how to use the framework. In that workspace, there is also a playground that includes documentation and tutorials for how each feature works.
Contributing
We’re glad you’re interested in Stagehand, and we’d love to see where you take it. Please read our [contributing guidelines](CONTRIBUTING.md) prior to submitting a Pull Request.
License
Copyright 2020 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the Stagehand README section above
are relevant to that project's source code only.