Skip to content
This repository was archived by the owner on Aug 30, 2023. It is now read-only.

Commit 292e4cc

Browse files
author
Jeff Verkoeyen
committed
Merge branch 'release-candidate' into stable
2 parents 60cf568 + 7cc61fb commit 292e4cc

26 files changed

+1706
-149
lines changed

.jazzy.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module: MotionAnimator
2-
module_version: 2.5.0
2+
module_version: 2.6.0
33
sdk: iphonesimulator
44
umbrella_header: src/MotionAnimator.h
55
objc: true
66
github_url: https://github.com/material-motion/motion-animator-objc
7-
github_file_prefix: https://github.com/material-motion/motion-animator-objc/tree/v2.5.0
7+
github_file_prefix: https://github.com/material-motion/motion-animator-objc/tree/v2.6.0

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
language: objective-c
2-
osx_image: xcode8.1
2+
osx_image: xcode8.3
33
sudo: false
44
before_install:
55
- gem install cocoapods --no-rdoc --no-ri --no-document --quiet
66
- pod install --repo-update
77
script:
88
- set -o pipefail
9-
- xcodebuild build -workspace MotionAnimator.xcworkspace -scheme MotionAnimatorCatalog -sdk "iphonesimulator10.1" -destination "name=iPhone 6s,OS=10.1" ONLY_ACTIVE_ARCH=YES | xcpretty -c;
9+
- xcodebuild build -workspace MotionAnimator.xcworkspace -scheme MotionAnimatorCatalog -sdk "iphonesimulator10.3" -destination "name=iPhone 6s,OS=10.1" ONLY_ACTIVE_ARCH=YES | xcpretty -c;
1010
after_success:
1111
- bash <(curl -s https://codecov.io/bash)

CHANGELOG.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
1+
# 2.6.0
2+
3+
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.
4+
5+
## New features
6+
7+
The following key paths are now officially supported: `MDMKeyPathBounds`, `MDMKeyPathShadowOffset`, `MDMKeyPathShadowOpacity`, and `MDMKeyPathShadowRadius`.
8+
9+
## Source changes
10+
11+
* [Add tests verifying the UIKit beginFromCurrentState option behavior. (#84)](https://github.com/material-motion/motion-animator-objc/commit/a91ac69ead2ac86709a67c6589e6f053ffee5aeb) (featherless)
12+
* [Disable additive animations for backgroundColor and opacity. (#66)](https://github.com/material-motion/motion-animator-objc/commit/3c6e3385adc3a386d2481e19beb7b4530751b8e4) (featherless)
13+
* [Run the implicit animations block when exiting early. (#81)](https://github.com/material-motion/motion-animator-objc/commit/3a563c574e915ae9edeeec90884ba24478ab9a24) (featherless)
14+
* [Clarify when completion is invoked in the docs. (#82)](https://github.com/material-motion/motion-animator-objc/commit/e7e0ce6d07a6b27a25256068fda0b45322099b11) (featherless)
15+
* [Implement a motion animator behavioral test. (#80)](https://github.com/material-motion/motion-animator-objc/commit/562c43b24837e399fd042d97cea65c975033cfd8) (featherless)
16+
* [Refactor common code from explicit/implicit animation implementations. (#78)](https://github.com/material-motion/motion-animator-objc/commit/6d801b3d0077712328483a2e0af40197945c11f1) (featherless)
17+
* [Check for divide-by-zero before calculating the initial velocity of spring animations. (#75)](https://github.com/material-motion/motion-animator-objc/commit/45f355f49c4be3818d5b646be78a500e3666af4f) (featherless)
18+
* [Add fallback mechanism for non-additive animations when beginFromCurrentState is enabled. (#76)](https://github.com/material-motion/motion-animator-objc/commit/433eb5fa683562428c0fa44a38d85e2bd740e6c9) (featherless)
19+
* [Fix the bounds key path docs to indicate that additive animations are not supported. (#77)](https://github.com/material-motion/motion-animator-objc/commit/efa8937c6872c0946b0679734472dc87d5fc0502) (featherless)
20+
* [Use objcType to identify the value types. (#73)](https://github.com/material-motion/motion-animator-objc/commit/5e6b649377d4f77fbef9332350cf22551fb65986) (featherless)
21+
* [Fix bug where beginFromCurrentState would not start from the current model/presentation value. (#71)](https://github.com/material-motion/motion-animator-objc/commit/74c0d5323220e0852afb6eb10e830f685ecdf724) (featherless)
22+
* [Only animate CGSize and CGPoint key paths additively if additive is enabled. (#72)](https://github.com/material-motion/motion-animator-objc/commit/524b3cb34d58d5354aa84bd9e5789cfddf8ea787) (featherless)
23+
* [Add public/private marks to the animator implementation. (#70)](https://github.com/material-motion/motion-animator-objc/commit/71d22e2d42b25bedeb6dcb5b1080cfd4e4b3cbd8) (featherless)
24+
* [Add MDMAllAnimatableKeyPaths API for retrieving all animatable key paths. (#69)](https://github.com/material-motion/motion-animator-objc/commit/f743ca076734cbb31964946cb62178fef0601b00) (featherless)
25+
* [Add bounds to the list of supported key paths. (#68)](https://github.com/material-motion/motion-animator-objc/commit/b0a5f373b925d4a94ebcd12b1d689d27b09cb693) (featherless)
26+
* [Document each animatable key path. (#65)](https://github.com/material-motion/motion-animator-objc/commit/f05e787b0814dfc90ae86ad8590edb5c30b9e27c) (featherless)
27+
* [Add shadow key paths to the animatable keypaths list. (#64)](https://github.com/material-motion/motion-animator-objc/commit/18a0edd13e2c26fc18ec20933b0bf8c8cd6905ad) (featherless)
28+
* [Add UIKit behavioral test verifying that layer values never implicitly animate outside of an animation block. (#63)](https://github.com/material-motion/motion-animator-objc/commit/efa04ffb41552b5a83151da3778e9b073c92a44b) (featherless)
29+
* [Add CALayer behavioral tests. (#62)](https://github.com/material-motion/motion-animator-objc/commit/e6bc2195f7dbfef146dd36101c458590ceb29c8f) (featherless)
30+
* [Add UIKit behavioral tests. (#60)](https://github.com/material-motion/motion-animator-objc/commit/ed203c883433d8a891d931ff408f5442434982c8) (featherless)
31+
32+
## API changes
33+
34+
### MDMAnimatableKeyPaths
35+
36+
**new** supported key paths: `MDMKeyPathBounds`, `MDMKeyPathShadowOffset`, `MDMKeyPathShadowOpacity`, and `MDMKeyPathShadowRadius`.
37+
38+
## Non-source changes
39+
40+
* [Add literature docs.](https://github.com/material-motion/motion-animator-objc/commit/ab856f69147a781226e9db8fd4c083d5d2ec77cf) (Jeff Verkoeyen)
41+
* [Make use of the implicit animator in the example. (#79)](https://github.com/material-motion/motion-animator-objc/commit/f505ecf8b2d85b77db5af961639a1f39437ac2fd) (featherless)
42+
* [Fix minor wording in the readme.](https://github.com/material-motion/motion-animator-objc/commit/2d6be5f5073f9a499a48aec13f0708b457569f44) (Jeff Verkoeyen)
43+
* [Drop cocoadocs from the readme.](https://github.com/material-motion/motion-animator-objc/commit/2692850cdf0f78a7356d867e9e4a303fd261bd31) (Jeff Verkoeyen)
44+
* [Update travis.yml with latest supported Xcode release.](https://github.com/material-motion/motion-animator-objc/commit/5a48e0084d079997227f73596a71b5caf91c0834) (Jeff Verkoeyen)
45+
146
# 2.5.0
247

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

MotionAnimator.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22
s.name = "MotionAnimator"
33
s.summary = "A Motion Animator creates performant, interruptible animations from motion specs."
4-
s.version = "2.5.0"
4+
s.version = "2.6.0"
55
s.authors = "The Material Motion Authors"
66
s.license = "Apache 2.0"
77
s.homepage = "https://github.com/material-motion/motion-animator-objc"

Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
PODS:
22
- CatalogByConvention (2.2.0)
3-
- MotionAnimator (2.5.0):
3+
- MotionAnimator (2.6.0):
44
- MotionInterchange (~> 1.3)
55
- MotionInterchange (1.3.0)
66

@@ -14,7 +14,7 @@ EXTERNAL SOURCES:
1414

1515
SPEC CHECKSUMS:
1616
CatalogByConvention: 5df5831e48b8083b18570dcb804f20fd1c90694f
17-
MotionAnimator: ba4c09d3070ec7c7a7c8d5502c795eb17a2f1406
17+
MotionAnimator: a4b0ba87a674bb3e89e25f0530b7e80a204ac1c1
1818
MotionInterchange: 988fc0011e4b806cc33f2fb4f9566f5eeb4159e8
1919

2020
PODFILE CHECKSUM: 3537bf01c11174928ac008c20fec4738722e96f3

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
[![codecov](https://codecov.io/gh/material-motion/motion-animator-objc/branch/develop/graph/badge.svg)](https://codecov.io/gh/material-motion/motion-animator-objc)
77
[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/MotionAnimator.svg)](https://cocoapods.org/pods/MotionAnimator)
88
[![Platform](https://img.shields.io/cocoapods/p/MotionAnimator.svg)](http://cocoadocs.org/docsets/MotionAnimator)
9-
[![Docs](https://img.shields.io/cocoapods/metrics/doc-percent/MotionAnimator.svg)](http://cocoadocs.org/docsets/MotionAnimator)
109

1110
---
1211

@@ -74,8 +73,8 @@ struct CalendarChipMotionSpec CalendarChipSpec = {
7473
```
7574

7675
Our spec defines two different transition states: expansion and collapse. At runtime, we determine
77-
which of these two specs we intend to use and then use the timings to animate our views with an
78-
instance of `MDMMotionAnimator`:
76+
which of these two specs we need and then use the timings to animate our views with an instance of
77+
`MDMMotionAnimator`:
7978

8079
```objc
8180
CalendarChipTiming timing = _expanded ? CalendarChipSpec.expansion : CalendarChipSpec.collapse;
@@ -271,6 +270,11 @@ and a key path:
271270
Animation's additive animation APIs. You can simply re-execute the `animate` calls when your
272271
transition's direction changes and the animator will add new animations for the updated direction.
273272
273+
## Helpful literature
274+
275+
- [Additive animations: animateWithDuration in iOS 8](http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/)
276+
- [WWDC 2014 video on additive animations](https://developer.apple.com/videos/play/wwdc2014/236/)
277+
274278
## Contributing
275279
276280
We welcome contributions!

examples/CalendarCardExpansionExample.m

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,11 @@ - (void)didTap {
4646

4747
MDMMotionAnimator *animator = [[MDMMotionAnimator alloc] init];
4848
animator.shouldReverseValues = !_expanded;
49+
animator.beginFromCurrentState = YES;
4950

50-
if (_expanded) {
51-
// We can't easily animate the hiding of the navigation bar because UIKit sets the hidden
52-
// property on the navigation bar immediately if animated: is false.
53-
[self.navigationController setNavigationBarHidden:true animated:true];
54-
55-
} else {
56-
// Cache the previous value because we want to restore it in a moment.
57-
BOOL wasReversingValues = animator.shouldReverseValues;
58-
animator.shouldReverseValues = false;
59-
60-
// Let UIKit do the layout calculations for us.
61-
CGFloat currentPosition = self.navigationController.navigationBar.layer.position.y;
62-
[self.navigationController setNavigationBarHidden:false animated:false];
63-
CGFloat desiredPosition = self.navigationController.navigationBar.layer.position.y;
64-
65-
[animator animateWithTiming:timing.navigationBarY
66-
toLayer:self.navigationController.navigationBar.layer
67-
withValues:@[ @(currentPosition), @(desiredPosition) ]
68-
keyPath:MDMKeyPathY];
69-
70-
// Restore the previous value.
71-
animator.shouldReverseValues = wasReversingValues;
72-
}
51+
[animator animateWithTiming:timing.navigationBarY animations:^{
52+
[self.navigationController setNavigationBarHidden:_expanded animated:YES];
53+
}];
7354

7455
CGRect chipFrame = [self frameForChip];
7556
CGRect headerFrame = [self frameForHeader];

examples/apps/Catalog/MotionAnimatorCatalog.xcodeproj/project.pbxproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
2AA864EDA683CEF5FAA721BE /* Pods_UnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DBE814C7B88BAD6337052DB /* Pods_UnitTests.framework */; };
1111
660636021FACC24300C3DFB8 /* TimeScaleFactorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660636011FACC24300C3DFB8 /* TimeScaleFactorTests.swift */; };
1212
6625876C1FB4DB9C00BC7DF1 /* InitialVelocityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6625876B1FB4DB9C00BC7DF1 /* InitialVelocityTests.swift */; };
13+
664F59941FCCE27E002EC56D /* UIKitBehavioralTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664F59931FCCE27E002EC56D /* UIKitBehavioralTests.swift */; };
14+
664F59961FCDB2E6002EC56D /* QuartzCoreBehavioralTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664F59951FCDB2E5002EC56D /* QuartzCoreBehavioralTests.swift */; };
15+
664F59981FCE5CE2002EC56D /* BeginFromCurrentStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664F59971FCE5CE2002EC56D /* BeginFromCurrentStateTests.swift */; };
16+
664F599A1FCE6661002EC56D /* NonAdditiveAnimatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664F59991FCE6661002EC56D /* NonAdditiveAnimatorTests.swift */; };
17+
664F599C1FCE67DB002EC56D /* AdditiveAnimatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664F599B1FCE67DB002EC56D /* AdditiveAnimatorTests.swift */; };
1318
666FAA841D384A6B000363DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 666FAA831D384A6B000363DA /* AppDelegate.swift */; };
1419
666FAA8B1D384A6B000363DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 666FAA8A1D384A6B000363DA /* Assets.xcassets */; };
1520
666FAA8E1D384A6B000363DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 666FAA8C1D384A6B000363DA /* LaunchScreen.storyboard */; };
@@ -18,6 +23,7 @@
1823
667A3F4C1DEE269400CB3A99 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 667A3F4A1DEE269400CB3A99 /* LaunchScreen.storyboard */; };
1924
667A3F541DEE273000CB3A99 /* TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 667A3F531DEE273000CB3A99 /* TableOfContents.swift */; };
2025
6687264A1EF04B4C00113675 /* MotionAnimatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668726491EF04B4C00113675 /* MotionAnimatorTests.swift */; };
26+
669B6CA91FD0547100B80B76 /* MotionAnimatorBehavioralTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669B6CA81FD0547100B80B76 /* MotionAnimatorBehavioralTests.swift */; };
2127
66A6A6681FBA158000DE54CB /* AnimationRemovalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A6A6671FBA158000DE54CB /* AnimationRemovalTests.swift */; };
2228
66BF5A8F1FB0E4CB00E864F6 /* ImplicitAnimationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66BF5A8E1FB0E4CB00E864F6 /* ImplicitAnimationTests.swift */; };
2329
66DD4BF51EEF0ECB00207119 /* CalendarCardExpansionExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 66DD4BF41EEF0ECB00207119 /* CalendarCardExpansionExample.m */; };
@@ -51,6 +57,11 @@
5157
52820916F8FAA40E942A7333 /* Pods-UnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-UnitTests.release.xcconfig"; path = "../../../Pods/Target Support Files/Pods-UnitTests/Pods-UnitTests.release.xcconfig"; sourceTree = "<group>"; };
5258
660636011FACC24300C3DFB8 /* TimeScaleFactorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeScaleFactorTests.swift; sourceTree = "<group>"; };
5359
6625876B1FB4DB9C00BC7DF1 /* InitialVelocityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitialVelocityTests.swift; sourceTree = "<group>"; };
60+
664F59931FCCE27E002EC56D /* UIKitBehavioralTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitBehavioralTests.swift; sourceTree = "<group>"; };
61+
664F59951FCDB2E5002EC56D /* QuartzCoreBehavioralTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuartzCoreBehavioralTests.swift; sourceTree = "<group>"; };
62+
664F59971FCE5CE2002EC56D /* BeginFromCurrentStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeginFromCurrentStateTests.swift; sourceTree = "<group>"; };
63+
664F59991FCE6661002EC56D /* NonAdditiveAnimatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonAdditiveAnimatorTests.swift; sourceTree = "<group>"; };
64+
664F599B1FCE67DB002EC56D /* AdditiveAnimatorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdditiveAnimatorTests.swift; sourceTree = "<group>"; };
5465
666FAA801D384A6B000363DA /* MotionAnimatorCatalog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MotionAnimatorCatalog.app; sourceTree = BUILT_PRODUCTS_DIR; };
5566
666FAA831D384A6B000363DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Catalog/AppDelegate.swift; sourceTree = "<group>"; };
5667
666FAA8A1D384A6B000363DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@@ -65,6 +76,7 @@
6576
667A3F4D1DEE269400CB3A99 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6677
667A3F531DEE273000CB3A99 /* TableOfContents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableOfContents.swift; sourceTree = "<group>"; };
6778
668726491EF04B4C00113675 /* MotionAnimatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MotionAnimatorTests.swift; sourceTree = "<group>"; };
79+
669B6CA81FD0547100B80B76 /* MotionAnimatorBehavioralTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MotionAnimatorBehavioralTests.swift; sourceTree = "<group>"; };
6880
66A6A6671FBA158000DE54CB /* AnimationRemovalTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationRemovalTests.swift; sourceTree = "<group>"; };
6981
66BF5A8E1FB0E4CB00E864F6 /* ImplicitAnimationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImplicitAnimationTests.swift; sourceTree = "<group>"; };
7082
66DD4BF31EEF0ECB00207119 /* CalendarCardExpansionExample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CalendarCardExpansionExample.h; sourceTree = "<group>"; };
@@ -214,14 +226,20 @@
214226
66FD99F81EE9FBA000C53A82 /* unit */ = {
215227
isa = PBXGroup;
216228
children = (
229+
664F599B1FCE67DB002EC56D /* AdditiveAnimatorTests.swift */,
217230
66A6A6671FBA158000DE54CB /* AnimationRemovalTests.swift */,
231+
664F59971FCE5CE2002EC56D /* BeginFromCurrentStateTests.swift */,
218232
66EF6F271FC33C4800C83A63 /* HeadlessLayerImplicitAnimationTests.swift */,
219233
66BF5A8E1FB0E4CB00E864F6 /* ImplicitAnimationTests.swift */,
220234
6625876B1FB4DB9C00BC7DF1 /* InitialVelocityTests.swift */,
221235
66EF6F291FC48D6A00C83A63 /* InstantAnimationTests.swift */,
236+
669B6CA81FD0547100B80B76 /* MotionAnimatorBehavioralTests.swift */,
222237
66FD99F91EE9FBBE00C53A82 /* MotionAnimatorTests.m */,
223238
668726491EF04B4C00113675 /* MotionAnimatorTests.swift */,
239+
664F59991FCE6661002EC56D /* NonAdditiveAnimatorTests.swift */,
240+
664F59951FCDB2E5002EC56D /* QuartzCoreBehavioralTests.swift */,
224241
660636011FACC24300C3DFB8 /* TimeScaleFactorTests.swift */,
242+
664F59931FCCE27E002EC56D /* UIKitBehavioralTests.swift */,
225243
);
226244
path = unit;
227245
sourceTree = "<group>";
@@ -499,12 +517,18 @@
499517
files = (
500518
6625876C1FB4DB9C00BC7DF1 /* InitialVelocityTests.swift in Sources */,
501519
66EF6F281FC33C4800C83A63 /* HeadlessLayerImplicitAnimationTests.swift in Sources */,
520+
664F599A1FCE6661002EC56D /* NonAdditiveAnimatorTests.swift in Sources */,
521+
664F59941FCCE27E002EC56D /* UIKitBehavioralTests.swift in Sources */,
502522
66EF6F2A1FC48D6A00C83A63 /* InstantAnimationTests.swift in Sources */,
503523
660636021FACC24300C3DFB8 /* TimeScaleFactorTests.swift in Sources */,
504524
66BF5A8F1FB0E4CB00E864F6 /* ImplicitAnimationTests.swift in Sources */,
525+
664F59961FCDB2E6002EC56D /* QuartzCoreBehavioralTests.swift in Sources */,
526+
664F599C1FCE67DB002EC56D /* AdditiveAnimatorTests.swift in Sources */,
505527
66A6A6681FBA158000DE54CB /* AnimationRemovalTests.swift in Sources */,
506528
6687264A1EF04B4C00113675 /* MotionAnimatorTests.swift in Sources */,
529+
664F59981FCE5CE2002EC56D /* BeginFromCurrentStateTests.swift in Sources */,
507530
66FD99FA1EE9FBBE00C53A82 /* MotionAnimatorTests.m in Sources */,
531+
669B6CA91FD0547100B80B76 /* MotionAnimatorBehavioralTests.swift in Sources */,
508532
);
509533
runOnlyForDeploymentPostprocessing = 0;
510534
};

0 commit comments

Comments
 (0)