Skip to content

Releases: PimCoumans/AnimationPlanner

v1.2.1

14 Jun 14:45
8b980ea
Compare
Choose a tag to compare

Animations in groups are now executed in the order they’re defined

What's Changed

Full Changelog: 1.2.0...1.2.1

v1.2.0

17 Apr 14:43
00867b3
Compare
Choose a tag to compare

Finally: full working sequence stopping!

What's Changed

Full Changelog: 1.1.1...1.2.0

v1.1.1

18 Mar 13:16
Compare
Choose a tag to compare

Added the option to delay a Sequence performed in an animation group. Simply add the .delayed() method to your Sequence:

AnimationPlanner.group {
    Sequence {
        // Your sequenced animations
    }.delayed(0.25) // Set delay for sequence here
}

Full Changelog: v1.1.0...1.1.1

v1.1.0

27 Apr 11:59
cd3d481
Compare
Choose a tag to compare

Swift 5.8 compatibility: ⚠️ Possibly breaking changes

Swift 5.8 changed some type-checking logic around result builders, complicating AnimationPlanner’s ‘clever’ logic of allowing some type of animations for both group and sequence animations. Now the following has been updated

  • Sequence and group animation builders now use their own result builder (@SequenceBuilder and @GroupBuilder respectively)
  • The Loop convenience struct and its static method Loop.through() have been removed, with a build error suggesting other approaches
  • The Swift.Sequence extension function mapAnimations() is now replaced with mapSequence() and mapGroup(). While not as clearly named, the type-checker now clearly knows what to do.
  • Usage for for and for _ in loops is more encouraged, as the result builder is perfectly capable to handle these.

What's Changed

Full Changelog: 1.0.0...v1.1.0

v1.0.0 - Prime time!

24 Jun 21:28
Compare
Choose a tag to compare
  • Removed any trace of old-style api, everything is result builders moving forward
  • Reorganized file structure. Clearer folder and filenames for all protocols and structs.

v0.9.3 - Result builders Phase 2

20 Jun 18:21
Compare
Choose a tag to compare

Warning: [breaking change] The completion parameter has been removed for theAnimationPlanner.plan and .group methods. Read on how to set your completion handler

AnimationPlanner now uses the new structs for all animations created through its API. Even the (now deprecated) UIView.animateSteps method results in a sequence animation handled by Animate and its friends.

To keep tabs on running animations, the RunningSequence class can be used. It is returned from the AnimationPlanner.plan and .group methods. RunningSequence shows the current state, all animations added, but also has a .stopAnimations() method to stop the current and cancel queued animations.

Use onComplete(_ handler: (_ finished: Bool) -> Void)) on the returned RunningSequence to perform logic when the sequence completes (or is stopped). Because the class is returned when creating your animation sequence, adding a completion handler can be done just like with a trailing closure:

AnimationPlanner.plan {
    // your animations
}.onComplete { finished in
    print(“finished!”)
}

v0.9.2 - SPM backwards compatibility

16 Jun 12:41
Compare
Choose a tag to compare

Added [email protected] supporting older swift versions

v0.9.1 - Logo and better readme

16 Jun 12:26
3889951
Compare
Choose a tag to compare

Designed a logo for the library, looks so much better now

v0.9.0 - New API

15 Jun 20:30
c3498cc
Compare
Choose a tag to compare

Adding functionality to use result builders to plan your animations, resulting in a cleaner looking experience.

Phase 1 of this change introduces the new AnimationPlanner.plan API that lives alongside the current, or ‘old’ UIView.animateSteps method. Behind the scenes the result builder logic transforms the animations to the current implementation of actually performing these animations.

  • Phase 1: New result builder API, lives next to ‘old' API
  • Phase 2: Old API uses result builder structs behind the scenes
  • Phase 3: Deprecate old API and fully move over to result builder API

v0.8.0

08 Jun 15:53
Compare
Choose a tag to compare

Introducing the extra step where preparations can be performed or side-effects handled (like triggering haptic feedback). More info in the docs and the complex animation in the sample app.