Discover great iOS animations and train your eyes to identify bad ones. Learn the meaning and purpose behind great iOS animations and adopt key animation principles to assist you to elevate your apps with satisfying animation experiences.
I O Stream Chat • Free In-App Messaging SDK & UI Kits for iOS/Swift • The easiest way to add messaging to your iOS apps, in days — not months • High-level UI Components • Connect the Stream Chat API with minimal coding • Developer toolkit for activity feeds • Get started with a free 30-day trial! • We’re hiring: See positions www.getstream.io
I O Why are we here? ☯ We like nice animations, but there are also bad ones 🧠 Best practices 🆒 How to make your apps better with animations 🫵 Show examples and discuss why they are good/bad
I O P R I N C I P L E S O F G R E AT I O S A N I M AT I O N S Anticipation Give users a sense of what is about to happen App Store card expansion: Signals the card is about to expand by slightly scaling down. Usage: Thumbnail image to fullscreen transition
I O P R I N C I P L E S O F G R E AT I O S A N I M AT I O N S Staging Direct users’ attention to focus on the important elements on the screen Number changes in count down or count up timers Instantly changing 0 to 100, it is easy to miss what just changed.
I O P R I N C I P L E S O F G R E AT I O S A N I M AT I O N S Follow through using Spring Animations Follow the principle of physics to create soft and imprecise movements Overshooting resting states Reactions: Telegram, iMessage, Stream’s SwiftUI sample app
I O P R I N C I P L E S O F G R E AT I O S A N I M AT I O N S Overlapping Action Occurs along with the primary motion Cascading and offsetting similar elements animating in the same way. Cascading text animation
I O Time between fromValue and toValue Timing relates to duration Pacing relates to speed Differentiate great animations from terrible ones Not slower or faster than it should be Timing and Pacing
I O Convey information more effectively Do not keep users waiting longer Example: Loaders should not run forever Food delivery example Animations should be nimble and precise
I O Screen flashing can cause headache and seizure Excessive motion can cause discomfort, dizziness Example: Parallax, sliding animations Follow basic accessibility guidelines
I O Ability to turn off some animations and motion effects How it works: Dissolve effect instead of zoom/slide. Disables parallax effects, wallpaper, rain, snow, animations, etc Detection: Via Environment variable (accessibilityReduceMotion) Reduce motion
I O Worth mentioning: PCalc Option to turn off scaling animation of buttons Settings Turn on/off animations, effects, and custom transitions Reduce motion: In-app
I O Already include motion Familiar and consistent UX Need custom motion? ❌ Overwhelm users 😵💫 Keep users oriented 🙋 Feedback to user’s actions Use System Components
I O Static assets: Sketch or Figma Timeline tool for Core Animation: Kite Compositor Recreate Kite animations in Xcode: SwiftUI Build into the actual app How to build better iOS animations
I O Does it provide any useful information? What emotional response does it convey? Is it supposed to establish a relationship between elements? What if the user’s reduced motion setting is on? Will springiness/bounciness feel out of place? Avoid adding custom animation/motion to frequently occurring interactions Recap Define the goal and purpose
I O Where do I go from here? Github repos Purposeful iOS Animations SwiftUI Spring Animations Cheat Sheet Stream SwiftUI Animation SwiftUI Animation Challenges MotionScape
I O References Human Interface Guidelines Principles of motion Animation choreography The Role of Animation and Motion in UX Motion sickness: Nausea Creating usability with motion Understanding the intuition of easing Reduce screen motion on Apple devices Responsive design for motion Easings.net