5.0.0

This major release drops Bazel support and support for iOS 9.

4.0.1

This patch release fixes a bug on iOS 14 affecting flickers when using animations that have no delay.

4.0.0

This major release drops official support for iOS 8 and fixes a static analyzer warning.

Source changes

Non-source changes

3.0.0

This major release upgrades the bazel dependencies and workspace. This change is breaking for anyone using bazel to build this library. In order to use this library with bazel, you will also need to upgrade your workspace versions to match the ones now used in this library's WORKSPACE file.

Source changes

Non-source changes

2.8.1

This patch release resolves some runtime crashes, improves the stability of our unit tests, and features an improved README.md.

Bug fixes

Fixed unrecognized selector crashes on iOS 8 devices.

Fixed crashes in Legacy API when providing nil completion blocks.

Source changes

Non-source changes

2.8.0

This minor release introduces support for animating more key paths and support for drop-in UIView animation API replacements.

New features

The MotionAnimator can now implicitly animate the following CALayer properties: anchorPoint, borderWidth, borderColor, shadowColor, and zPosition.

There are now UIKit equivalency APIs that can be used as drop-in replacements for existing UIView animation code.

Source changes

API changes

Auto-generated by running:

apidiff origin/stable release-candidate objc src/MotionAnimator.h

Animatable key paths

new constant: MDMKeyPathAnchorPoint

new constant: MDMKeyPathBorderWidth

new constant: MDMKeyPathBorderColor

new constant: MDMKeyPathShadowColor

new constant: MDMKeyPathZ

MDMMotionAnimator(UIKitEquivalency)

new class method: +animateWithDuration:delay:options:animations:completion: in MDMMotionAnimator(UIKitEquivalency)

new class method: +animateWithDuration:animations:completion: in MDMMotionAnimator(UIKitEquivalency)

new class method: +animateWithDuration:animations: in MDMMotionAnimator(UIKitEquivalency)

new class method: +animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion: in MDMMotionAnimator(UIKitEquivalency)

Non-source changes


2.7.0

This minor release introduces support for the new v1.5.0 MotionInterchange format.

New features

It is now possible to additively and implicitly animate the transform property of both UIView and CALayer.

Source changes

API changes

Auto-generated by running:

apidiff origin/stable release-candidate objc src/MotionAnimator.h

MDMMotionAnimator

new method: -animateWithTraits:animations:completion: in MDMMotionAnimator

new method: -animateWithTraits:between:layer:keyPath: in MDMMotionAnimator

new method: -animateWithTraits:animations: in MDMMotionAnimator

new method: -animateWithTraits:between:layer:keyPath:completion: in MDMMotionAnimator

MDMKeyPathTransform

new constant: MDMKeyPathTransform

Non-source changes

2.6.0

This minor release increases test coverage, fixes a variety of bugs related to beginFromCurrentState, and generally improves the stability and robustness of the underlying implementation.

New features

The following key paths are now officially supported: MDMKeyPathBounds, MDMKeyPathShadowOffset, MDMKeyPathShadowOpacity, and MDMKeyPathShadowRadius.

Source changes

API changes

MDMAnimatableKeyPaths

new supported key paths: MDMKeyPathBounds, MDMKeyPathShadowOffset, MDMKeyPathShadowOpacity, and MDMKeyPathShadowRadius.

Non-source changes

2.5.0

This minor release makes CALayer implicit animation support more robust while simplifying the internal animator implementation.

New deprecations

MDMMotionAnimator's +sharedLayerDelegate API has been deprecated and is no longer needed to animate headless CALayer instances.

New features

The animator now supports additive animations on CALayer's shadowOffset property.

Source changes

API changes

MDMMotionAnimator

deprecated method: +sharedLayerDelegate

2.4.0

This minor release introduces support for implicitly animating CALayers that have been created independently of a UIView. To use this new functionality, consider the following example:

let layer = CALayer()
layer.delegate = MotionAnimator.sharedLayerDelegate()
animator.animate(with: timing) {
  layer.opacity = 0.5
}

New features

Added support for adding implicit animations to headless CALayer instances.

Source changes

API changes

MDMMotionAnimator

new method: +sharedLayerDelegate

Non-source changes

2.3.0

This minor release introduces new features for working with gestural interactions.

New features

Added two new methods for removing and stopping running animations.

Source changes

API changes

MDMMotionAnimator

new method: removeAllAnimations

new method: stopAllAnimations

2.2.1

This patch release fixes a bug where CGPoint and CGSize spring animations would not properly extract initial velocity from their motion timings.

Source changes

Non-source changes

2.2.0

This minor release introduces support for the new initial velocity spring curve value in MotionInterchange v1.3.0. This release also includes additional public and internal documentation.

Dependency changes

The minimum MotionInterchange version has been increased to v1.3.0.

New features

MDMMotionAnimator now supports initial velocity for spring curves.

Source changes

Non-source changes

2.1.1

This patch release fixes issues with downstream bazel builds.

Source changes

Non-source changes

2.1.0

This minor release introduces new implicit animation APIs. These APIs provide a migration path from existing UIView animateWithDuration:... code.

New features

New APIs for writing implicit animations in UIView style:

animator.animate(with: timing) {
  view.alpha = 0
}

Source changes

API changes

MDMMotionAnimator

new method: animateWithTiming:animations:

new method: animateWithTiming:animations:completion:

Non-source changes

2.0.2

This patch release includes minor fixes for CocoaPods unit tests.

CocoaPods Swift modules require that header dependencies be imported using <> notation.

Source changes

2.0.1

This patch release includes minor fixes for bazel + kokoro continuous integration.

Source changes

2.0.0

This major release includes several new APIs, bug fixes, and internal cleanup.

Breaking changes

The animator now adds non-additive animations with the keyPath as the animation key. This is a behavioral change in that animations will now remove the current animation with the same key.

Bug fixes

Implicit animations are no longer created when adding animations within a UIView animation block.

New features

New keypath constants:

  • backgroundColor
  • position
  • rotation
  • strokeStart
  • strokeEnd

New APIs on CATransaction for setting a transaction-specific timeScaleFactor:

CATransaction.begin()
CATransaction.mdm_setTimeScaleFactor(0.5)
animator.animate...
CATransaction.commit()

Source changes

API changes

CATransaction

new method: mdm_timeScaleFactor.

new method: mdm_setTimeScaleFactor:.

Animatable key paths

new constant: MDMKeyPathBackgroundColor

new constant: MDMKeyPathPosition

new constant: MDMKeyPathRotation

new constant: MDMKeyPathStrokeStart

new constant: MDMKeyPathStrokeEnd

MDMCoreAnimationTraceable

new protocol: MDMCoreAnimationTraceable

1.1.3

This patch release resolves an Xcode 9 build warning.

Source changes

Non-source changes

1.1.2

Added support for Xcode 7 builds.

Source changes

1.1.1

Bug fix release due to compiler warnings.

Breaking changes

New deprecations

New features

Source changes

1.1.0

This minor change resolves some Xcode 9 warnings and introduces the ability to speed up or slow down animations.

New features

  • Added a new keypath constant, MDMKeyPathScale.
  • MDMAnimator animation timing can now be scaled using the new timeScaleFactor property.

Source changes

1.0.1

This is a patch fix release to address build issues within Google's build environment.

Source changes

1.0.0

Initial release.

Includes MDMMotionAnimator and a small set of pre-defined animatable key paths.

Source changes

Non-source changes