blob: 33252cac1b7757859203f4d3e417c34e5ed61fac [file] [log] [blame] [view] [edit]
# 4.0.1
This patch release resolves some missed warnings in 4.0.0 and fixes a broken test on iOS 13+14.
# 4.0.0
This major release drops official support for Bazel and iOS 9.
# 3.0.0
This major release drops official support for iOS 8.
## Non-source changes
* [Drop support for iOS 8 (#43)](https://github.com/material-motion/motion-interchange-objc/commit/31a6c576f752a132206c7b09412bd6a390052b88) (featherless)
* [Remove the xcode_select logic. (#42)](https://github.com/material-motion/motion-interchange-objc/commit/9cd51bc492174aabfa99cd2d4d802f8f58a3239c) (featherless)
# 2.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
* [Update .travis.yml (#35)](https://github.com/material-motion/motion-interchange-objc/commit/f9891a24b843edc004f86ee86f7477d6327957b1) (featherless)
## Non-source changes
* [Update bazel workspace to latest versions. (#40)](https://github.com/material-motion/motion-interchange-objc/commit/a9a1cab4354ce45d8a4548b28c708455ce93885a) (featherless)
* [Update .kokoro](https://github.com/material-motion/motion-interchange-objc/commit/cfbd73021314ce24b0e0f2d37906b58b128e416c) (featherless)
* [Update .kokoro](https://github.com/material-motion/motion-interchange-objc/commit/7e3af4ac83426ea8da8283211e09c0458ff24b81) (featherless)
* [Update bazel workspace and version to latest (#38)](https://github.com/material-motion/motion-interchange-objc/commit/71aa2e4393574d2b4b5cf55695787b9a662165d1) (featherless)
* [Update .kokoro to build against Xcode 9.1](https://github.com/material-motion/motion-interchange-objc/commit/816f52f4600b311f50dae7ef9aa3b9f9f1fb1b0e) (featherless)
* [Update .travis.yml](https://github.com/material-motion/motion-interchange-objc/commit/ba7e0f0015b83eda35edf0144fb6fa3ebb52a81a) (featherless)
# 1.6.0
This patch release introduces a compatibility initializer for creating Objective-C animation traits from C-style motion timings.
## Source changes
* [Add a legacy initializer for animation traits. (#34)](https://github.com/material-motion/motion-interchange-objc/commit/e3321d0e4081de1f3d8edee115af0a9ea2142c48) (featherless)
## API changes
Auto-generated by running:
apidiff origin/stable release-candidate objc src/MotionInterchange.h
#### MDMAnimationTraits(Legacy)
*new* method: `-initWithMotionTiming:` in `MDMAnimationTraits(Legacy)`
*new* category: `MDMAnimationTraits(Legacy)`
# 1.5.0
This minor release introduces new Objective-C APIs for creating and storing animation traits.
## New deprecations
All of the original C-style APIs for animation timing are now informally deprecated. We will remove these APIs in the future.
## New features
New Objective-C APIs for storing animation traits.
| Old API | New API | Rationale |
|:------- |:-------- |:-----------|
| MotionTiming | AnimationTraits | This structure is intended to describe animations only, not motion in general. |
| MotionCurve | TimingCurve | This brings the API name closer to the similarly-purposed `CAMediaTimingFunction`. MotionCurve could also be easily confused with motion through x/y space rather than through time (e.g. ArcMove), which will be problematic as we start defining paths of motion through space. |
| MotionRepetition | RepetitionTraits | This aligns the naming with AnimationTraits. |
## Source changes
* [Restrict subclassing on all types. (#32)](https://github.com/material-motion/motion-interchange-objc/commit/0530ba355d8af640fd9fd51df137c6aed494f63c) (featherless)
* [Re-introduce v1 APIs. (#33)](https://github.com/material-motion/motion-interchange-objc/commit/4a857a0393d55e01d1b282d12a814cec197111c0) (featherless)
* [Extract the UIKit damping ratio APIs to their own class. (#31)](https://github.com/material-motion/motion-interchange-objc/commit/e9226a45892cf1a3f783232e6e7fc81751aaeb1d) (featherless)
* [Add support for copying animation traits. (#30)](https://github.com/material-motion/motion-interchange-objc/commit/f7fb09546d034fcdf8e57509aa157a760aebd398) (featherless)
* [Allow writing of all properties. (#26)](https://github.com/material-motion/motion-interchange-objc/commit/4f74d24b6d66503fed71af36482665814e10a3a4) (featherless)
* [Add support for damping ratio initializers on the spring timing curve. (#27)](https://github.com/material-motion/motion-interchange-objc/commit/9d7352cec750b8c00fe300708647ebb01189b6c2) (featherless)
* [Use UIViewAnimationCurve instead of NSString as the easing curve type. (#28)](https://github.com/material-motion/motion-interchange-objc/commit/d94246c2b5286d20f92dfc7569b39798394d9422) (featherless)
* [Add APIs for initializing an animation trait with a named timing function. (#25)](https://github.com/material-motion/motion-interchange-objc/commit/72e75e44a940e815a06ee516237451be0646b688) (featherless)
* [Implement v2 APIs (#22)](https://github.com/material-motion/motion-interchange-objc/commit/3a28e221cfe9fccc2c46523adbb817334e7e918a) (featherless)
* [Standardize the timing curve creation methods on CGFloat. (#21)](https://github.com/material-motion/motion-interchange-objc/commit/75f0d3515bda6cb9770c96ddb787a3da50a2b7c6) (featherless)
## API changes
Auto-generated by running:
apidiff origin/stable release-candidate objc src/MotionInterchange.h
#### MDMRepetitionOverTime
*new* class: `MDMRepetitionOverTime`
*new* method: `-initWithDuration:autoreverses:` in `MDMRepetitionOverTime`
*new* method: `-init` in `MDMRepetitionOverTime`
*new* property: `duration` in `MDMRepetitionOverTime`
*new* method: `-initWithDuration:` in `MDMRepetitionOverTime`
#### MDMTimingCurve
*new* protocol: `MDMTimingCurve`
#### CAMediaTimingFunction()
*new* category: `CAMediaTimingFunction()`
#### MDMRepetitionTraits
*new* property: `autoreverses` in `MDMRepetitionTraits`
*new* protocol: `MDMRepetitionTraits`
#### MDMMotionCurveMakeSpringWithInitialVelocity
*modified* function: `MDMMotionCurveMakeSpringWithInitialVelocity`
| Type of change: | Swift declaration |
|---|---|
| From: | `func MotionCurveMakeSpring(mass: Float, tension: Float, friction: Float, initialVelocity: Float) -> MotionCurve` |
| To: | `func MotionCurveMakeSpring(mass: CGFloat, tension: CGFloat, friction: CGFloat, initialVelocity: CGFloat) -> MotionCurve` |
*modified* function: `MDMMotionCurveMakeSpringWithInitialVelocity`
| Type of change: | Declaration |
|---|---|
| From: | `extern MDMMotionCurve MDMMotionCurveMakeSpringWithInitialVelocity( float mass, float tension, float friction, float initialVelocity)` |
| To: | `extern MDMMotionCurve MDMMotionCurveMakeSpringWithInitialVelocity( CGFloat mass, CGFloat tension, CGFloat friction, CGFloat initialVelocity)` |
#### MDMSpringTimingCurve
*new* property: `tension` in `MDMSpringTimingCurve`
*new* method: `-init` in `MDMSpringTimingCurve`
*new* property: `friction` in `MDMSpringTimingCurve`
*new* property: `initialVelocity` in `MDMSpringTimingCurve`
*new* property: `mass` in `MDMSpringTimingCurve`
*new* class: `MDMSpringTimingCurve`
*new* method: `-initWithMass:tension:friction:` in `MDMSpringTimingCurve`
*new* method: `-initWithMass:tension:friction:initialVelocity:` in `MDMSpringTimingCurve`
#### MDMAnimationTraits
*new* class: `MDMAnimationTraits`
*new* property: `repetition` in `MDMAnimationTraits`
*new* property: `delay` in `MDMAnimationTraits`
*new* property: `duration` in `MDMAnimationTraits`
*new* method: `-initWithDelay:duration:animationCurve:` in `MDMAnimationTraits`
*new* method: `-initWithDelay:duration:timingCurve:repetition:` in `MDMAnimationTraits`
*new* method: `-initWithDuration:animationCurve:` in `MDMAnimationTraits`
*new* method: `-initWithDelay:duration:` in `MDMAnimationTraits`
*new* method: `-init` in `MDMAnimationTraits`
*new* method: `-initWithDelay:duration:timingCurve:` in `MDMAnimationTraits`
*new* method: `-initWithDuration:` in `MDMAnimationTraits`
*new* property: `timingCurve` in `MDMAnimationTraits`
#### CAMediaTimingFunction(MotionInterchangeExtension)
*new* method: `-mdm_reversed` in `CAMediaTimingFunction(MotionInterchangeExtension)`
*new* property: `mdm_point1` in `CAMediaTimingFunction(MotionInterchangeExtension)`
*new* category: `CAMediaTimingFunction(MotionInterchangeExtension)`
*new* property: `mdm_point2` in `CAMediaTimingFunction(MotionInterchangeExtension)`
#### MDMMotionCurveMakeSpring
*modified* function: `MDMMotionCurveMakeSpring`
| Type of change: | Swift declaration |
|---|---|
| From: | `func MotionCurveMakeSpring(mass: Float, tension: Float, friction: Float) -> MotionCurve` |
| To: | `func MotionCurveMakeSpring(mass: CGFloat, tension: CGFloat, friction: CGFloat) -> MotionCurve` |
*modified* function: `MDMMotionCurveMakeSpring`
| Type of change: | Declaration |
|---|---|
| From: | `extern MDMMotionCurve MDMMotionCurveMakeSpring(float mass, float tension, float friction)` |
| To: | `extern MDMMotionCurve MDMMotionCurveMakeSpring(CGFloat mass, CGFloat tension, CGFloat friction)` |
#### MDMAnimationTraits(SystemTraits)
*new* category: `MDMAnimationTraits(SystemTraits)`
*new* property: `systemModalMovement` in `MDMAnimationTraits(SystemTraits)`
#### MDMSpringTimingCurveGenerator
*new* property: `initialVelocity` in `MDMSpringTimingCurveGenerator`
*new* class: `MDMSpringTimingCurveGenerator`
*new* method: `-init` in `MDMSpringTimingCurveGenerator`
*new* method: `-initWithDuration:dampingRatio:initialVelocity:` in `MDMSpringTimingCurveGenerator`
*new* property: `dampingRatio` in `MDMSpringTimingCurveGenerator`
*new* method: `-springTimingCurve` in `MDMSpringTimingCurveGenerator`
*new* method: `-initWithDuration:dampingRatio:` in `MDMSpringTimingCurveGenerator`
*new* property: `duration` in `MDMSpringTimingCurveGenerator`
#### MDMMotionCurveMakeBezier
*modified* function: `MDMMotionCurveMakeBezier`
| Type of change: | Swift declaration |
|---|---|
| From: | `func MotionCurveMakeBezier(p1x: Float, p1y: Float, p2x: Float, p2y: Float) -> MotionCurve` |
| To: | `func MotionCurveMakeBezier(p1x: CGFloat, p1y: CGFloat, p2x: CGFloat, p2y: CGFloat) -> MotionCurve` |
*modified* function: `MDMMotionCurveMakeBezier`
| Type of change: | Declaration |
|---|---|
| From: | `extern MDMMotionCurve MDMMotionCurveMakeBezier(float p1x, float p1y, float p2x, float p2y)` |
| To: | `extern MDMMotionCurve MDMMotionCurveMakeBezier(CGFloat p1x, CGFloat p1y, CGFloat p2x, CGFloat p2y)` |
#### MDMRepetition
*new* method: `-initWithNumberOfRepetitions:autoreverses:` in `MDMRepetition`
*new* method: `-initWithNumberOfRepetitions:` in `MDMRepetition`
*new* class: `MDMRepetition`
*new* property: `numberOfRepetitions` in `MDMRepetition`
*new* method: `-init` in `MDMRepetition`
## Non-source changes
* [Update docs with new API.](https://github.com/material-motion/motion-interchange-objc/commit/c30d90457c7bf6901e684ba932a5dd3b8ecd5fe5) (Jeff Verkoeyen)
* [Fixing travis builds.](https://github.com/material-motion/motion-interchange-objc/commit/a4301e2eb55594408452446b37dec9a13d93ca53) (Jeff Verkoeyen)
* [Use http_archive instead of git_respository as per the bazel team's recommendations. (#29)](https://github.com/material-motion/motion-interchange-objc/commit/0730f1a905421f9a5d75e6015e1bf4d242a76988) (featherless)
* [Remove unused header.](https://github.com/material-motion/motion-interchange-objc/commit/e8af0592da1aa244867089532381f6dbdd801a77) (Jeff Verkoeyen)
* [Iterating on the usage docs.](https://github.com/material-motion/motion-interchange-objc/commit/dcca85ea152d83cbdcf88d74916a228f40c8c2e1) (Jeff Verkoeyen)
* [Revert "Add todo configuration"](https://github.com/material-motion/motion-interchange-objc/commit/41588742c057d79a3a3a7338f867a9622d84e143) (Jeff Verkoeyen)
* [Add todo configuration](https://github.com/material-motion/motion-interchange-objc/commit/d2e1450ac327ebfba49c7489375bd635e9cfc1bb) (featherless)
* [Enable code coverage on travis](https://github.com/material-motion/motion-interchange-objc/commit/111d91ea2da6ee2a8acd73c89664f4b10b6232c1) (featherless)
* [Run tests on Travis.](https://github.com/material-motion/motion-interchange-objc/commit/f56f8a7a75e93a087aadc0f0d5759be13fd43cb7) (Jeff Verkoeyen)
* [Update README.md](https://github.com/material-motion/motion-interchange-objc/commit/3f9405eac1445d0f12cb4fad4ad0a89631ded920) (featherless)
* [Fix minor typo.](https://github.com/material-motion/motion-interchange-objc/commit/671ab1d579fd1d1c228ec266396145bbaf70f996) (Jeff Verkoeyen)
* [Initial pass at fleshing out the readme (#24)](https://github.com/material-motion/motion-interchange-objc/commit/4e0a2e7ad5f258bc450a9dde3281fa7c3752bae6) (featherless)
* [Fix travis.](https://github.com/material-motion/motion-interchange-objc/commit/866ec18cf2353c2682f89d1350af57c05ce25839) (Jeff Verkoeyen)
* [Add missing Info.plist. (#20)](https://github.com/material-motion/motion-interchange-objc/commit/0080128a6846d2eda8538cab260cbecbbe32b9a1) (Sylvain Defresne)
# 1.4.0
This minor release introduces new APIs for creating springs that have an initial velocity.
## New features
Added new APIs for creating springs with initial velocity:
`MDMMotionCurveMakeSpringWithInitialVelocity` and `_MDMSpringWithInitialVelocity`.
## Source changes
* [Add new APIs for creating springs with initial velocity. (#19)](https://github.com/material-motion/motion-interchange-objc/commit/326180f9f5f99e7d5e9e23131de8c24abe2e1dbf) (featherless)
## API changes
### MDMMotionCurveMakeSpringWithInitialVelocity
**new** function: `MDMMotionCurveMakeSpringWithInitialVelocity`
### _MDMSpringWithInitialVelocity
**new** macro: `_MDMSpringWithInitialVelocity`
## Non-source changes
* [Add sdk_frameworks dependencies to the BUILD file. (#18)](https://github.com/material-motion/motion-interchange-objc/commit/a601fb65166426bc708d84c0e29d89913c445d04) (featherless)
* [Add jazzy yaml.](https://github.com/material-motion/motion-interchange-objc/commit/130e9760bbb8c0e2179f820cc14f1278c9465b84) (Jeff Verkoeyen)
# 1.3.0
This minor releases introduces new APIs for defining motion curves.
## New deprecations
`MDMMotionCurveTypeDefault` is now deprecated. Use `MDMMotionCurveTypeBezier` instead.
## New features
The new `MDMLinearMotionCurve` macro allows you to define linear easing curves in specs.
Spring curve specs can now define initial velocity. This value can be read using the new
`MDMSpringMotionCurveDataIndexInitialVelocity` enum value for `MDMSpringMotionCurveDataIndex`.
## Source changes
* [Document and define the initial velocity parameter of spring curves (#17)](https://github.com/material-motion/motion-interchange-objc/commit/7eb5e2f79229c3b7cdada7b8df3e1e66b7e229e5) (featherless)
* [Add a linear curve constant. (#16)](https://github.com/material-motion/motion-interchange-objc/commit/0aa4f8caff7314310c3cbd721814305ee6f53601) (featherless)
* [Deprecate MDMMotionCurveTypeDefault in favor of MDMMotionCurveTypeBezier. (#15)](https://github.com/material-motion/motion-interchange-objc/commit/f5a7f3b4a63d4643700403930e2cafd7d4482013) (featherless)
## API changes
### MDMSpringMotionCurveDataIndexInitialVelocity
**new** enum: `MDMSpringMotionCurveDataIndexInitialVelocity`.
### MDMLinearMotionCurve
**new** constant/macro: `MDMLinearMotionCurve`.
# 1.2.0
This minor release introduces a new API for reversing cubic beziers and a unit test for
`MDMModalMovementTiming`.
## New features
`MDMMotionCurveReversedBezier` reverses cubic bezier curves. Intended for use when building mirrored
bi-directional transitions.
## Source changes
* [Add a unit test for MDMModalMovementTiming. (#12)](https://github.com/material-motion/motion-interchange-objc/commit/a0c3566ad52a45365657e0591701afa7989eb822) (featherless)
* [Add MDMMotionCurveReversed for reversing timing curves. (#11)](https://github.com/material-motion/motion-interchange-objc/commit/a54a5ffa49052a198b4bb5beedce737bb61ebc91) (featherless)
## API changes
### MDMMotionCurveReversedBezier
**new** function: `MDMMotionCurveReversedBezier`.
## Non-source changes
* [Standardize the kokoro and bazel files. (#13)](https://github.com/material-motion/motion-interchange-objc/commit/a009d3f7d08d8b2d087891a86eb1e298714198b4) (featherless)
* [Use the v1.0.0 tag for bazel_ios_warnings. (#10)](https://github.com/material-motion/motion-interchange-objc/commit/545b6a448ddb235279318dc262f051d653a48ed4) (featherless)
# 1.1.1
This patch release migrates the project's continuous integration pipeline from arc to bazel and
kokoro.
## New features
Continuous integration can now be run locally by executing `./.kokoro` from the root of the git
repo. Requires [bazel](http://bazel.io/).
## Source changes
* [Replace arc with bazel and Kokoro continuous integration. (#9)](https://github.com/material-motion/motion-interchange-objc/commit/2ef4dfbf95a7beb3f0e323e259576b6797420202) (featherless)
* [Fix warning in unit tests. (#8)](https://github.com/material-motion/motion-interchange-objc/commit/d3203a2857648f74d478525514c0f10cb6552b19) (featherless)
* [Add missing import.](https://github.com/material-motion/motion-interchange-objc/commit/445091dbbd68cd0a75e4dd86195cb431b0717e71) (Jeff Verkoeyen)
# 1.1.0
This minor release introduces two new APIs for working with timing curves.
## New features
- `MDMMotionCurveFromTimingFunction` can create a timing curve from a `CAMediaTimingFunction`.
- `MDMModalMovementTiming` is the iOS timing curve for modal presentation movement.
## Source changes
* [Add MDMMotionCurveFromTimingFunction for creating motion curves from timing functions. (#7)](https://github.com/material-motion/motion-interchange-objc/commit/5e9837cb453f354609f574e42c3c7cf69d4e2796) (featherless)
* [Add system timing constant for movement during modal presentation. (#4)](https://github.com/material-motion/motion-interchange-objc/commit/bf757fe5dac65f9e76778d57988689b908a6c69b) (featherless)
## API changes
*new* function: `MDMMotionCurveFromTimingFunction`.
*new* macro: `MDMModalMovementTiming`.
## Non-source changes
* [Update Xcode project settings.](https://github.com/material-motion/motion-interchange-objc/commit/d932efd547276084a09334f38595a3f8da28205d) (Jeff Verkoeyen)
* [Update Podfile.lock.](https://github.com/material-motion/motion-interchange-objc/commit/07f701eb6918752c29f381a028080c5c12511474) (Jeff Verkoeyen)
# 1.0.1
Added a missing framework header for Objective-C support.
## Source changes
* [Add missing framework header.](https://github.com/material-motion/motion-interchange-objc/commit/03a9b2592e805f06eb622238d7ce8ad7e6f56e90) (Jeff Verkoeyen)
## Non-source changes
* [Fix links in readme.](https://github.com/material-motion/motion-interchange-objc/commit/a438194edb51214fca13955fc2badcd93f587ec5) (Jeff Verkoeyen)
# 1.0.0
Initial release.
Includes MotionTiming structure for representing cubic bezier and spring animations.
## Source changes
* [Initial commit of motion interchange format. (#1)](https://github.com/material-motion/motion-interchange-objc/commit/e1d882b11f1ecdd3edf5c8746c8d243939ea097a) (featherless)