gitmyhub

AnimationEffects

Swift ★ 1 updated 1mo ago

An iOS app for designing and tuning animation curves

An iOS app with interactive editors for tuning spring, bezier, and keyframe animation curves, then exporting the resulting Swift code.

SwiftSwiftUIUIKitCoreTextsetup: moderatecomplexity 2/5

AnimationEffects is an iOS app built with SwiftUI that lets you design and fine tune animation curves visually, then copy the resulting Swift code into your own project. Rather than guessing at animation settings and rebuilding your app repeatedly to see the result, this app gives you interactive editors with a live preview.

It covers three animation approaches. The spring editor lets you adjust mass, stiffness, damping, and initial velocity, while showing a live readout of the damping ratio and a graph of how the animated value moves over time, along with whether the spring is under, critically, or over damped. The bezier editor gives you a draggable curve with two control points, along with named presets like linear or ease in and out, and a moving playhead synced to the curve. The keyframes editor offers a multi track timeline where you can drag diamonds to retime them, tap a track to add a new key, and tap a diamond to edit or delete its value.

Every screen pairs its editor with an animated preview object, so what you see moving on screen always matches the graph and the numbers you are adjusting. The spring and bezier screens can export ready to use code for either SwiftUI or UIKit projects.

On the design side, the app uses a custom typography setup with Poppins for interface text and SF Mono for numbers and code, a warm gold and emerald color theme with all values defined in one theme file for easy re-skinning, and light haptic feedback when interacting with the tools or when a spring animation settles.

The code follows an MVVM structure, with a dedicated view model behind each editor screen handling its state and playback logic. The README states the project is copyrighted with all rights reserved, so it is not an open license.

Where it fits