This major release drops Bazel support and support for iOS 9.
This patch release fixes a bug on iOS 14 affecting flickers when using animations that have no delay.
This major release drops official support for iOS 8 and fixes a static analyzer warning.
- Resolve a static analyzer warning. (#124) (featherless)
- Ran pod install with latest cocoapods. (#123) (featherless)
- Drop support for iOS 8 (#122) (featherless)
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.
- Make tests more robust to crashing failures. (#118) (featherless)
- Automatic changelog preparation for release. (Jeff Verkoeyen)
- Update bazel workspace to latest versions. (#120) (featherless)
- Don't animate system views with the animator. (#119) (featherless)
- Update .travis.yml (featherless)
- Update .kokoro (featherless)
- Update .kokoro (featherless)
- Update bazel workspace and version to latest. (#117) (featherless)
This patch release resolves some runtime crashes, improves the stability of our unit tests, and features an improved README.md.
Fixed unrecognized selector crashes on iOS 8 devices.
Fixed crashes in Legacy API when providing nil completion blocks.
- Ensure that zero duration test is testing with zero duration. (#115) (featherless)
- Reduce flakiness in UIKitBehavioralTests. (#113) (featherless)
- Return
nil
CAAction when swapping implementation (#109) (Robert Moore) - Fix crash in Legacy API for nil completion blocks (#110) (Robert Moore)
- Iterating on the readme. (#102) (featherless)
- Update .travis.yml (#114) (featherless)
- Add core animation quiz to the readme. (#108) (featherless)
- Add readme section on main thread animations vs Core Animation. (#107) (featherless)
- Add API snippets section. (#106) (featherless)
- Add drop in replacement APIs section to the readme (#105) (featherless)
- Add a feature table to the readme. (#104) (featherless)
This minor release introduces support for animating more key paths and support for drop-in UIView animation API replacements.
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.
- Add IS_BAZEL_BUILD around MotionInterchange import (#103) (Louis Romero)
- Anchor point became animatable on iOS 11. (Jeff Verkoeyen)
- Add support for animating anchorPoint. (#97) (featherless)
- Add support for animating shadow color. (#99) (featherless)
- Add support for animating border width and color. (#98) (featherless)
- Add support for animating z position. (#96) (featherless)
- Add support for additively animating bounds. (#93) (featherless)
- Improve the documentation for initial velocity. (#94) (featherless)
- Standardize our param docs formatting. (#95) (featherless)
- Add back test properties that were accidentally removed in 69469aedb987e516ff1f43a123b3ee29dfef38ca. (Jeff Verkoeyen)
- Add support for using a spring generator as a timing curve. (#91) (featherless)
- Throw an assertion when an unrecognized timing curve is provided. (#92) (featherless)
- Add UIKit equivalent APIs for animating implicitly. (#90) (featherless)
Auto-generated by running:
apidiff origin/stable release-candidate objc src/MotionAnimator.h
new constant: MDMKeyPathAnchorPoint
new constant: MDMKeyPathBorderWidth
new constant: MDMKeyPathBorderColor
new constant: MDMKeyPathShadowColor
new constant: MDMKeyPathZ
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)
- Animate the border as well to demonstrate that we can animate CALayer properties with the animator. (#101) (featherless)
- Add a UIKit-ish tap to bounce example as a contrast to the traits example. (#100) (featherless)
- Wording order. (Jeff Verkoeyen)
- Min SDK support. (Jeff Verkoeyen)
- Fix the banner url. (Jeff Verkoeyen)
- Add banner and drop most of the preamble docs in preparation for the new readme. (Jeff Verkoeyen)
This minor release introduces support for the new v1.5.0 MotionInterchange format.
It is now possible to additively and implicitly animate the transform
property of both UIView and CALayer.
- Fix pre-iOS 11 unit test failure. (#89) (featherless)
- Migrate to the Objective-C interchange format (#88) (featherless)
- Revert "Update with ObjC implementation." (Jeff Verkoeyen)
- Update with ObjC implementation. (Jeff Verkoeyen)
- Add support for additively animating transform. (#85) (featherless)
Auto-generated by running:
apidiff origin/stable release-candidate objc src/MotionAnimator.h
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
new constant: MDMKeyPathTransform
- Update .travis.yml (featherless)
- Enable coverage on travis (featherless)
- Update kokoro bazel runner for v4. (Jeff Verkoeyen)
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.
The following key paths are now officially supported: MDMKeyPathBounds
, MDMKeyPathShadowOffset
, MDMKeyPathShadowOpacity
, and MDMKeyPathShadowRadius
.
- Add tests verifying the UIKit beginFromCurrentState option behavior. (#84) (featherless)
- Disable additive animations for backgroundColor and opacity. (#66) (featherless)
- Run the implicit animations block when exiting early. (#81) (featherless)
- Clarify when completion is invoked in the docs. (#82) (featherless)
- Implement a motion animator behavioral test. (#80) (featherless)
- Refactor common code from explicit/implicit animation implementations. (#78) (featherless)
- Check for divide-by-zero before calculating the initial velocity of spring animations. (#75) (featherless)
- Add fallback mechanism for non-additive animations when beginFromCurrentState is enabled. (#76) (featherless)
- Fix the bounds key path docs to indicate that additive animations are not supported. (#77) (featherless)
- Use objcType to identify the value types. (#73) (featherless)
- Fix bug where beginFromCurrentState would not start from the current model/presentation value. (#71) (featherless)
- Only animate CGSize and CGPoint key paths additively if additive is enabled. (#72) (featherless)
- Add public/private marks to the animator implementation. (#70) (featherless)
- Add MDMAllAnimatableKeyPaths API for retrieving all animatable key paths. (#69) (featherless)
- Add bounds to the list of supported key paths. (#68) (featherless)
- Document each animatable key path. (#65) (featherless)
- Add shadow key paths to the animatable keypaths list. (#64) (featherless)
- Add UIKit behavioral test verifying that layer values never implicitly animate outside of an animation block. (#63) (featherless)
- Add CALayer behavioral tests. (#62) (featherless)
- Add UIKit behavioral tests. (#60) (featherless)
new supported key paths: MDMKeyPathBounds
, MDMKeyPathShadowOffset
, MDMKeyPathShadowOpacity
, and MDMKeyPathShadowRadius
.
- Add literature docs. (Jeff Verkoeyen)
- Make use of the implicit animator in the example. (#79) (featherless)
- Fix minor wording in the readme. (Jeff Verkoeyen)
- Drop cocoadocs from the readme. (Jeff Verkoeyen)
- Update travis.yml with latest supported Xcode release. (Jeff Verkoeyen)
This minor release makes CALayer implicit animation support more robust while simplifying the internal animator implementation.
MDMMotionAnimator
's +sharedLayerDelegate
API has been deprecated and is no longer needed to animate headless CALayer instances.
The animator now supports additive animations on CALayer's shadowOffset
property.
- Improved robustness of implicit animation support (#53) (featherless)
- If timeScaleFactor is 0 then exit early. (#58) (featherless)
- Spring animations now take velocity into account when determining duration. (#56) (featherless)
- Flatten the animate internal logic. (#55) (featherless)
- Allow headless CALayers to implicitly animate when using the sharedLayerDelegate. (#57) (featherless)
- Always commit the model layer value inside a transaction with actions disabled. (#54) (featherless)
- Add shadowOffset to list of support CGSize properties. (#50) (featherless)
deprecated method: +sharedLayerDelegate
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
}
Added support for adding implicit animations to headless CALayer instances.
new method: +sharedLayerDelegate
- Remove references to interchange macros. (#44) (featherless)
- Add missing Info.plist. (#43) (Sylvain Defresne)
This minor release introduces new features for working with gestural interactions.
Added two new methods for removing and stopping running animations.
- Add support for removing added animations (#42) (featherless)
new method: removeAllAnimations
new method: stopAllAnimations
This patch release fixes a bug where CGPoint and CGSize spring animations would not properly extract initial velocity from their motion timings.
- Add missing sdk_frameworks to the BUILD file. (#40) (featherless)
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.
The minimum MotionInterchange version has been increased to v1.3.0.
MDMMotionAnimator
now supports initial velocity for spring curves.
- Use MotionCurve make methods to create motion timings in the tests. (#38) (featherless)
- Extract initial velocity from the motion timing. (#37) (featherless)
- Silence a deprecation warning in motion interchange 1.3.0. (Jeff Verkoeyen)
- Bump MotionInterchange dependency to 1.3. (Jeff Verkoeyen)
- Ensure that deprecations are treated as warnings, not errors, when building with CocoaPods. (Jeff Verkoeyen)
- Move example project up. (Jeff Verkoeyen)
- Formatting. (Jeff Verkoeyen)
- Add more tutorials and rework the introduction. (Jeff Verkoeyen)
- Add a guide on building motion specs. (Jeff Verkoeyen)
- Add jazzy yaml. (Jeff Verkoeyen)
This patch release fixes issues with downstream bazel builds.
- Touch up the block animations docs. (#35) (featherless)
- Resolve bazel build dependency issues. (#29) (featherless)
- Fix typo in the changelog. (Jeff Verkoeyen)
This minor release introduces new implicit animation APIs. These APIs provide a migration path from
existing UIView animateWithDuration:...
code.
New APIs for writing implicit animations in UIView style:
animator.animate(with: timing) {
view.alpha = 0
}
- Add a unit test verifying that the completion handler is called when duration == 0. (#34) (featherless)
- Add new APIs for implicit animations. (#30) (featherless)
new method: animateWithTiming:animations:
new method: animateWithTiming:animations:completion:
This patch release includes minor fixes for CocoaPods unit tests.
CocoaPods Swift modules require that header dependencies be imported using <>
notation.
- Use <> framework import for MDMMotionAnimator.h in order to support module builds. (#28) (featherless)
This patch release includes minor fixes for bazel + kokoro continuous integration.
- Replace framework import with relative import. (#27) (featherless)
This major release includes several new APIs, bug fixes, and internal cleanup.
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.
Implicit animations are no longer created when adding animations within a UIView animation block.
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()
- Add support for customizing the timeScaleFactor as part of a CATransaction (#25) (featherless)
- [breaking] Use the keyPath as the key when the animator is not additive. (#22) (featherless)
- Disable implicit animations when adding explicit animations in the animator (#20) (featherless)
- Move private APIs to the private folder. (#17) (featherless)
- Add rotation, strokeStart, and strokeEnd key paths. (#19) (featherless)
- Extract a MDMCoreAnimationTraceable protocol from MotionAnimator. (#18) (featherless)
- Add position and backgroundColor as key paths. (#15) (featherless)
- Replace arc with kokoro and bazel support for continuous integration. (#13) (featherless)
new method: mdm_timeScaleFactor
.
new method: mdm_setTimeScaleFactor:
.
new constant: MDMKeyPathBackgroundColor
new constant: MDMKeyPathPosition
new constant: MDMKeyPathRotation
new constant: MDMKeyPathStrokeStart
new constant: MDMKeyPathStrokeEnd
new protocol: MDMCoreAnimationTraceable
This patch release resolves an Xcode 9 build warning.
- Update CocoaPods and ensure that warnings are enabled for the project. (Jeff Verkoeyen)
- Add explicit swift version file for CocoaPods. (Jeff Verkoeyen)
Added support for Xcode 7 builds.
- Resolve Xcode 7 build error. (#11) (featherless)
Bug fix release due to compiler warnings.
- Fix compiler warnings due to misconfigured Podfile. (#8) (featherless)
This minor change resolves some Xcode 9 warnings and introduces the ability to speed up or slow down animations.
- Added a new keypath constant,
MDMKeyPathScale
. - MDMAnimator animation timing can now be scaled using the new
timeScaleFactor
property.
- If settlingDuration is unavailable, use the provided spring duration. (#5) (featherless)
- Resolve Xcode 9 warnings. (#7) (featherless)
- Add a timeScaleFactor API to the animator. (#6) (featherless)
- Add transform.scale keypath. (#3) (featherless)
This is a patch fix release to address build issues within Google's build environment.
- Add missing header imports. (Jeff Verkoeyen)
Initial release.
Includes MDMMotionAnimator and a small set of pre-defined animatable key paths.
- Add support for iOS 8. (Jeff Verkoeyen)
- Initial commit of MotionAnimator code. (#1) (featherless)
- Initial preparation for project. (Jeff Verkoeyen)
- Remove superlatives. (Jeff Verkoeyen)
- Add more delay to the chip animation. (Jeff Verkoeyen)
- Update docs. (Jeff Verkoeyen)