├── lottie-ios ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── Extensions │ ├── LOTHelpers.h │ ├── CAAnimationGroup+LOTAnimatableGroup.h │ ├── CAAnimationGroup+LOTAnimatableGroup.m │ └── UIColor+Expanded.h │ ├── AnimatableLayers │ ├── LOTStrokeShapeLayer.h │ ├── LOTAnimatableLayer.h │ ├── LOTAnimatableLayer.m │ ├── LOTMaskLayer.h │ ├── LOTLayerView.h │ ├── LOTShapeLayerView.h │ ├── LOTEllipseShapeLayer.h │ ├── LOTRectShapeLayer.h │ ├── LOTGroupLayerView.h │ └── LOTMaskLayer.m │ ├── MacCompatability │ ├── CALayer+Compat.h │ ├── CALayer+Compat.m │ ├── CADisplayLink.h │ ├── NSValue+Compat.h │ ├── NSValue+Compat.m │ ├── LOTPlatformCompat.h │ ├── UIColor.h │ └── CADisplayLink.m │ ├── AnimatableProperties │ ├── LOTAnimatableValue.h │ ├── LOTAnimatableScaleValue.h │ ├── LOTAnimatableBoundsValue.h │ ├── LOTAnimatableShapeValue.h │ ├── LOTAnimatableColorValue.h │ ├── LOTAnimatablePointValue.h │ └── LOTAnimatableNumberValue.h │ ├── AnimationCache │ ├── LOTAnimationCache.h │ └── LOTAnimationCache.m │ ├── PublicHeaders │ ├── Lottie.h │ ├── LOTAnimationView_Compat.h │ ├── LOTAnimationView.h │ └── LOTAnimationTransitionController.h │ ├── Models │ ├── LOTShapeCircle.h │ ├── LOTShapePath.h │ ├── LOTShapeGroup.h │ ├── LOTShapeTrimPath.h │ ├── LOTShapeFill.h │ ├── LOTShapeRectangle.h │ ├── LOTComposition.h │ ├── LOTMask.h │ ├── LOTModels.h │ ├── LOTShapePath.m │ ├── LOTShapeTransform.h │ ├── LOTShapeCircle.m │ ├── LOTShapeStroke.h │ ├── LOTShapeFill.m │ ├── LOTShapeTrimPath.m │ ├── LOTShapeRectangle.m │ ├── LOTMask.m │ ├── LOTComposition.m │ └── LOTShapeStroke.m │ └── Private │ └── LOTAnimationView_Internal.h ├── .npmignore ├── _Gifs ├── abcs.gif ├── PinJump.gif ├── Examples1.gif ├── Examples2.gif ├── Examples3.gif ├── Examples4.gif ├── EmptyState.gif ├── LottieLogo1.gif ├── LottieLogo2.gif ├── TwitterHeart.gif ├── Walkthrough.gif ├── transition3.gif ├── Community 2_3.gif └── HamburgerArrow.gif ├── Example ├── Tests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Tests-Prefix.pch │ ├── Tests-Info.plist │ └── Tests.m ├── lottie-ios │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── lottie_logo.png │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x-1.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x-1.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x-1.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ ├── TypingDemoViewController.h │ ├── LottieRootViewController.h │ ├── AnimationExplorerViewController.h │ ├── AnimationTransitionViewController.h │ ├── LAAppDelegate.h │ ├── lottie-ios-Prefix.pch │ ├── JSONExplorerViewController.h │ ├── main.m │ ├── AnimatedTextField.h │ ├── lottie-ios-Info.plist │ ├── Base.lproj │ │ └── Main.storyboard │ └── LAAppDelegate.m ├── Pods │ ├── Target Support Files │ │ ├── lottie-ios-OSX │ │ │ ├── lottie-ios-OSX.modulemap │ │ │ ├── lottie-ios-OSX-dummy.m │ │ │ ├── lottie-ios-OSX-prefix.pch │ │ │ ├── lottie-ios-OSX-umbrella.h │ │ │ ├── lottie-ios-OSX.xcconfig │ │ │ └── Info.plist │ │ ├── lottie-ios-iOS │ │ │ ├── lottie-ios-iOS.modulemap │ │ │ ├── lottie-ios-iOS-dummy.m │ │ │ ├── lottie-ios-iOS-prefix.pch │ │ │ ├── lottie-ios-iOS-umbrella.h │ │ │ ├── lottie-ios-iOS.xcconfig │ │ │ └── Info.plist │ │ ├── Pods-Lottie-Example │ │ │ ├── Pods-Lottie-Example.modulemap │ │ │ ├── Pods-Lottie-Example-dummy.m │ │ │ ├── Pods-Lottie-Example-umbrella.h │ │ │ ├── Pods-Lottie-Example.debug.xcconfig │ │ │ ├── Pods-Lottie-Example.release.xcconfig │ │ │ └── Info.plist │ │ ├── Pods-lottie-ios_Tests │ │ │ ├── Pods-lottie-ios_Tests.modulemap │ │ │ ├── Pods-lottie-ios_Tests-acknowledgements.markdown │ │ │ ├── Pods-lottie-ios_Tests-dummy.m │ │ │ ├── Pods-lottie-ios_Tests-umbrella.h │ │ │ ├── Pods-lottie-ios_Tests.debug.xcconfig │ │ │ ├── Pods-lottie-ios_Tests.release.xcconfig │ │ │ ├── Info.plist │ │ │ └── Pods-lottie-ios_Tests-acknowledgements.plist │ │ └── Pods-Lottie-Example-MacOS │ │ │ ├── Pods-Lottie-Example-MacOS.modulemap │ │ │ ├── Pods-Lottie-Example-MacOS-dummy.m │ │ │ ├── Pods-Lottie-Example-MacOS-umbrella.h │ │ │ ├── Pods-Lottie-Example-MacOS.debug.xcconfig │ │ │ ├── Pods-Lottie-Example-MacOS.release.xcconfig │ │ │ └── Info.plist │ ├── Manifest.lock │ └── Local Podspecs │ │ └── lottie-ios.podspec.json ├── lottie-ios.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcuserdata │ │ └── brandon_withrow.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── Podfile ├── lottie-ios.xcworkspace │ └── contents.xcworkspacedata ├── Example for lottie-macos │ ├── ViewController.h │ ├── main.m │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── ViewController.m │ ├── Info.plist │ └── Assets.xcassets │ │ └── AppIcon.appiconset │ │ └── Contents.json ├── Podfile.lock └── Assets │ └── TypeFace │ └── BlinkingCursor.json ├── index.js ├── _AeFiles ├── PinJump.aep ├── EmptyState.aep ├── LottieLogos.aep ├── Walkthrough.aep ├── HamburgerArrow.aep └── TwitterHeart.aep ├── Lottie-Screenshot ├── Pods │ ├── Headers │ │ ├── Private │ │ │ ├── lottie-ios │ │ │ │ └── Lottie │ │ │ │ │ ├── LOTLayer.h │ │ │ │ │ ├── LOTMask.h │ │ │ │ │ ├── LOTModels.h │ │ │ │ │ ├── Lottie.h │ │ │ │ │ ├── LOTComposition.h │ │ │ │ │ ├── LOTHelpers.h │ │ │ │ │ ├── LOTShapeCircle.h │ │ │ │ │ ├── LOTShapeFill.h │ │ │ │ │ ├── LOTShapeGroup.h │ │ │ │ │ ├── LOTShapePath.h │ │ │ │ │ ├── LOTShapeStroke.h │ │ │ │ │ ├── UIColor.h │ │ │ │ │ ├── LOTShapeTrimPath.h │ │ │ │ │ ├── CADisplayLink.h │ │ │ │ │ ├── CALayer+Compat.h │ │ │ │ │ ├── LOTLayerView.h │ │ │ │ │ ├── LOTMaskLayer.h │ │ │ │ │ ├── LOTShapeRectangle.h │ │ │ │ │ ├── LOTShapeTransform.h │ │ │ │ │ ├── NSValue+Compat.h │ │ │ │ │ ├── UIBezierPath.h │ │ │ │ │ ├── UIColor+Expanded.h │ │ │ │ │ ├── LOTAnimationCache.h │ │ │ │ │ ├── LOTAnimationView.h │ │ │ │ │ ├── LOTAnimatableLayer.h │ │ │ │ │ ├── LOTGroupLayerView.h │ │ │ │ │ ├── LOTPlatformCompat.h │ │ │ │ │ ├── LOTRectShapeLayer.h │ │ │ │ │ ├── LOTShapeLayerView.h │ │ │ │ │ ├── LOTStrokeShapeLayer.h │ │ │ │ │ ├── CGGeometry+LOTAdditions.h │ │ │ │ │ ├── LOTAnimatableValue.h │ │ │ │ │ ├── LOTAnimationView_Compat.h │ │ │ │ │ ├── LOTAnimationView_Internal.h │ │ │ │ │ ├── LOTEllipseShapeLayer.h │ │ │ │ │ ├── LOTAnimatableBoundsValue.h │ │ │ │ │ ├── LOTAnimatableColorValue.h │ │ │ │ │ ├── LOTAnimatableNumberValue.h │ │ │ │ │ ├── LOTAnimatablePointValue.h │ │ │ │ │ ├── LOTAnimatableScaleValue.h │ │ │ │ │ ├── LOTAnimatableShapeValue.h │ │ │ │ │ ├── LOTAnimationTransitionController.h │ │ │ │ │ └── CAAnimationGroup+LOTAnimatableGroup.h │ │ │ └── FBSnapshotTestCase │ │ │ │ ├── FBSnapshotTestCase.h │ │ │ │ ├── UIImage+Diff.h │ │ │ │ ├── UIImage+Compare.h │ │ │ │ ├── UIImage+Snapshot.h │ │ │ │ ├── FBSnapshotTestController.h │ │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ │ └── UIApplication+StrictKeyWindow.h │ │ └── Public │ │ │ ├── lottie-ios │ │ │ └── Lottie │ │ │ │ ├── Lottie.h │ │ │ │ ├── LOTAnimationView.h │ │ │ │ ├── LOTAnimationView_Compat.h │ │ │ │ └── LOTAnimationTransitionController.h │ │ │ └── FBSnapshotTestCase │ │ │ ├── FBSnapshotTestCase.h │ │ │ ├── FBSnapshotTestController.h │ │ │ └── FBSnapshotTestCasePlatform.h │ ├── Target Support Files │ │ ├── lottie-ios │ │ │ ├── lottie-ios-prefix.pch │ │ │ ├── lottie-ios-dummy.m │ │ │ └── lottie-ios.xcconfig │ │ ├── FBSnapshotTestCase │ │ │ ├── FBSnapshotTestCase-prefix.pch │ │ │ ├── FBSnapshotTestCase-dummy.m │ │ │ └── FBSnapshotTestCase.xcconfig │ │ ├── Pods-Lottie-Screenshot │ │ │ ├── Pods-Lottie-Screenshot-acknowledgements.markdown │ │ │ ├── Pods-Lottie-Screenshot-dummy.m │ │ │ ├── Pods-Lottie-Screenshot.debug.xcconfig │ │ │ ├── Pods-Lottie-Screenshot.release.xcconfig │ │ │ └── Pods-Lottie-Screenshot-acknowledgements.plist │ │ ├── Pods-Lottie-ScreenshotUITests │ │ │ ├── Pods-Lottie-ScreenshotUITests-acknowledgements.markdown │ │ │ ├── Pods-Lottie-ScreenshotUITests-dummy.m │ │ │ ├── Pods-Lottie-ScreenshotUITests.debug.xcconfig │ │ │ ├── Pods-Lottie-ScreenshotUITests.release.xcconfig │ │ │ └── Pods-Lottie-ScreenshotUITests-acknowledgements.plist │ │ └── Pods-Lottie-ScreenshotTests │ │ │ ├── Pods-Lottie-ScreenshotTests-dummy.m │ │ │ ├── Pods-Lottie-ScreenshotTests.debug.xcconfig │ │ │ └── Pods-Lottie-ScreenshotTests.release.xcconfig │ ├── Manifest.lock │ ├── FBSnapshotTestCase │ │ ├── FBSnapshotTestCase │ │ │ ├── Categories │ │ │ │ ├── UIApplication+StrictKeyWindow.h │ │ │ │ ├── UIImage+Snapshot.h │ │ │ │ ├── UIApplication+StrictKeyWindow.m │ │ │ │ ├── UIImage+Diff.h │ │ │ │ └── UIImage+Compare.h │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ └── FBSnapshotTestCasePlatform.m │ │ └── LICENSE │ └── Local Podspecs │ │ └── lottie-ios.podspec.json ├── Tests │ └── ReferenceImages_64 │ │ ├── Hosts │ │ ├── testHosts0@2x.png │ │ ├── testHosts15@2x.png │ │ ├── testHosts25@2x.png │ │ ├── testHosts50@2x.png │ │ └── testHosts100@2x.png │ │ ├── CityTest │ │ ├── testCity0@2x.png │ │ ├── testCity15@2x.png │ │ ├── testCity25@2x.png │ │ ├── testCity50@2x.png │ │ └── testCity100@2x.png │ │ ├── AlarmTest │ │ ├── testAlarm0@2x.png │ │ ├── testAlarm100@2x.png │ │ └── testAlarm50@2x.png │ │ ├── AllSetTest │ │ ├── testAllSet0@2x.png │ │ ├── testAllSet100@2x.png │ │ └── testAllSet50@2x.png │ │ ├── PinJump │ │ ├── testPinJump0@2x.png │ │ ├── testPinJump100@2x.png │ │ └── testPinJump50@2x.png │ │ ├── LightBulb │ │ ├── testLightBulb0@2x.png │ │ ├── testLightBulb100@2x.png │ │ └── testLightBulb50@2x.png │ │ ├── CheckSwitchTest │ │ ├── testCheckSwitch0@2x.png │ │ ├── testCheckSwitch100@2x.png │ │ └── testCheckSwitch50@2x.png │ │ ├── EmpyStateTest │ │ ├── testEmpyStateTest0@2x.png │ │ ├── testEmpyStateTest100@2x.png │ │ └── testEmpyStateTest50@2x.png │ │ ├── LottieLogoTest │ │ ├── testLottieLogo0@2x.png │ │ ├── testLottieLogo100@2x.png │ │ ├── testLottieLogo15@2x.png │ │ ├── testLottieLogo25@2x.png │ │ └── testLottieLogo50@2x.png │ │ ├── LottieLogoTestB │ │ ├── testLottieLogo0@2x.png │ │ ├── testLottieLogo15@2x.png │ │ ├── testLottieLogo25@2x.png │ │ ├── testLottieLogo50@2x.png │ │ └── testLottieLogo100@2x.png │ │ ├── PathStrokeTest │ │ ├── testPathStroke0@2x.png │ │ ├── testPathStroke100@2x.png │ │ └── testPathStroke50@2x.png │ │ ├── TrimPathFill │ │ └── testTrimPathFill100@2x.png │ │ ├── TrimPathsFull │ │ ├── testTrimPathsFull0@2x.png │ │ ├── testTrimPathsFull100@2x.png │ │ └── testTrimPathsFull50@2x.png │ │ ├── AlBoardmanTest │ │ ├── testAlBoardmanTest0@2x.png │ │ ├── testAlBoardmanTest100@2x.png │ │ └── testAlBoardmanTest50@2x.png │ │ ├── SplitDimensions │ │ ├── testSplitDimensions0@2x.png │ │ ├── testSplitDimensions50@2x.png │ │ └── testSplitDimensions100@2x.png │ │ ├── LoopPlayOnceTest │ │ ├── testLoopPlayOnceTest0@2x.png │ │ ├── testLoopPlayOnceTest50@2x.png │ │ └── testLoopPlayOnceTest100@2x.png │ │ ├── TwitterHeartTest │ │ ├── testTwitterHeartTest0@2x.png │ │ ├── testTwitterHeartTest50@2x.png │ │ └── testTwitterHeartTest100@2x.png │ │ └── HamburgerArrowTest │ │ ├── testHamburgerArrowTest0@2x.png │ │ ├── testHamburgerArrowTest100@2x.png │ │ └── testHamburgerArrowTest50@2x.png ├── Lottie-ScreenshotTests │ ├── ReferenceImages │ │ └── LottieLogoTest1Spec │ │ │ ├── LottieLogo1_100@2x.png │ │ │ ├── LottieLogo1_15@2x.png │ │ │ ├── LottieLogo1_25@2x.png │ │ │ └── LottieLogo1_50@2x.png │ ├── LottieAnimationTestCase.h │ ├── TrimPathFill.m │ ├── AlarmTest.m │ ├── PinJump.m │ ├── AllSetTest.m │ ├── LightBulb.m │ ├── Info.plist │ ├── PathStrokeTest.m │ ├── CheckSwitchTest.m │ ├── EmpyStateTest.m │ ├── TrimPathsFull.m │ ├── AlBoardmanTest.m │ ├── SplitDimensions.m │ ├── LoopPlayOnceTest.m │ ├── TwitterHeartTest.m │ ├── HamburgerArrowTest.m │ ├── Hosts.m │ ├── CityTest.m │ ├── LottieLogoTestB.m │ ├── LottieLogoTest.m │ └── LottieAnimationTestCase.m ├── Lottie-Screenshot.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── Lottie-Screenshot.xcworkspace │ └── contents.xcworkspacedata ├── Lottie-Screenshot │ ├── ViewController.h │ ├── AppDelegate.h │ ├── main.m │ ├── ViewController.m │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── SplitDimensions.json │ ├── Info.plist │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ ├── TrimPathFill.json │ └── AppDelegate.m ├── Podfile.lock └── Podfile ├── Lottie.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── .gitignore ├── package.json ├── Lottie └── Info.plist └── lottie-ios.podspec /lottie-ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lottie-ios/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | _AeFiles 2 | _Gifs 3 | Example 4 | -------------------------------------------------------------------------------- /_Gifs/abcs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/abcs.gif -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /_Gifs/PinJump.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/PinJump.gif -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | throw new Error('NPM Module \'lottie-ios\' has no main JavaScript export.'); 2 | -------------------------------------------------------------------------------- /Example/lottie-ios/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /_Gifs/Examples1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Examples1.gif -------------------------------------------------------------------------------- /_Gifs/Examples2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Examples2.gif -------------------------------------------------------------------------------- /_Gifs/Examples3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Examples3.gif -------------------------------------------------------------------------------- /_Gifs/Examples4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Examples4.gif -------------------------------------------------------------------------------- /_AeFiles/PinJump.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/PinJump.aep -------------------------------------------------------------------------------- /_Gifs/EmptyState.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/EmptyState.gif -------------------------------------------------------------------------------- /_Gifs/LottieLogo1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/LottieLogo1.gif -------------------------------------------------------------------------------- /_Gifs/LottieLogo2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/LottieLogo2.gif -------------------------------------------------------------------------------- /_Gifs/TwitterHeart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/TwitterHeart.gif -------------------------------------------------------------------------------- /_Gifs/Walkthrough.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Walkthrough.gif -------------------------------------------------------------------------------- /_Gifs/transition3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/transition3.gif -------------------------------------------------------------------------------- /_AeFiles/EmptyState.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/EmptyState.aep -------------------------------------------------------------------------------- /_AeFiles/LottieLogos.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/LottieLogos.aep -------------------------------------------------------------------------------- /_AeFiles/Walkthrough.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/Walkthrough.aep -------------------------------------------------------------------------------- /_Gifs/Community 2_3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/Community 2_3.gif -------------------------------------------------------------------------------- /_Gifs/HamburgerArrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_Gifs/HamburgerArrow.gif -------------------------------------------------------------------------------- /_AeFiles/HamburgerArrow.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/HamburgerArrow.aep -------------------------------------------------------------------------------- /_AeFiles/TwitterHeart.aep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/_AeFiles/TwitterHeart.aep -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTMask.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTMask.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTModels.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTModels.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/lottie-ios/Lottie/Lottie.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/Lottie.h -------------------------------------------------------------------------------- /Example/lottie-ios/lottie_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/lottie_logo.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/Lottie.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/Lottie.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTComposition.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTComposition.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTHelpers.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Extensions/LOTHelpers.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeCircle.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeCircle.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeFill.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeFill.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeGroup.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapePath.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapePath.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeStroke.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeStroke.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/UIColor.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/UIColor.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeTrimPath.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeTrimPath.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CADisplayLink.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/CADisplayLink.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CALayer+Compat.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/CALayer+Compat.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTLayerView.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTLayerView.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTMaskLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTMaskLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeRectangle.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeRectangle.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeTransform.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Models/LOTShapeTransform.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/NSValue+Compat.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/NSValue+Compat.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/UIBezierPath.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/UIBezierPath.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/UIColor+Expanded.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Extensions/UIColor+Expanded.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/lottie-ios/Lottie/LOTAnimationView.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationView.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/lottie-ios/lottie-ios-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimationCache.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimationCache/LOTAnimationCache.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimationView.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationView.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTAnimatableLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTGroupLayerView.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTGroupLayerView.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTPlatformCompat.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/MacCompatability/LOTPlatformCompat.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTRectShapeLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTRectShapeLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTShapeLayerView.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTShapeLayerView.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTStrokeShapeLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTStrokeShapeLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CGGeometry+LOTAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Extensions/CGGeometry+LOTAdditions.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimationView_Compat.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationView_Compat.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimationView_Internal.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Private/LOTAnimationView_Internal.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTEllipseShapeLayer.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableLayers/LOTEllipseShapeLayer.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestController.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/lottie-ios/Lottie/LOTAnimationView_Compat.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationView_Compat.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableBoundsValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableBoundsValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableColorValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableNumberValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableNumberValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatablePointValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatablePointValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableScaleValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableScaleValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableShapeValue.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableShapeValue.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIApplication+StrictKeyWindow.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimationTransitionController.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationTransitionController.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Public/lottie-ios/Lottie/LOTAnimationTransitionController.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/PublicHeaders/LOTAnimationTransitionController.h -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CAAnimationGroup+LOTAnimatableGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../lottie-ios/Classes/Extensions/CAAnimationGroup+LOTAnimatableGroup.h -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts15@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts25@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts25@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity15@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity25@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity25@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/Hosts/testHosts100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlarmTest/testAlarm50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CityTest/testCity100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PinJump/testPinJump50@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/lottie-ios-OSX.modulemap: -------------------------------------------------------------------------------- 1 | framework module Lottie { 2 | umbrella header "lottie-ios-OSX-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/lottie-ios-iOS.modulemap: -------------------------------------------------------------------------------- 1 | framework module Lottie { 2 | umbrella header "lottie-ios-iOS-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AllSetTest/testAllSet50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb0@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LightBulb/testLightBulb50@2x.png -------------------------------------------------------------------------------- /Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Example/lottie-ios/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/lottie-ios/lottie-ios-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_lottie_ios : NSObject 3 | @end 4 | @implementation PodsDummy_lottie_ios 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/lottie-ios-OSX-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_lottie_ios_OSX : NSObject 3 | @end 4 | @implementation PodsDummy_lottie_ios_OSX 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/lottie-ios-iOS-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_lottie_ios_iOS : NSObject 3 | @end 4 | @implementation PodsDummy_lottie_ios_iOS 5 | @end 6 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo15@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo25@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo25@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTest/testLottieLogo50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo15@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo25@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo25@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/PathStrokeTest/testPathStroke50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathFill/testTrimPathFill100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathFill/testTrimPathFill100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/CheckSwitchTest/testCheckSwitch50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/EmpyStateTest/testEmpyStateTest50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LottieLogoTestB/testLottieLogo100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TrimPathsFull/testTrimPathsFull50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/AlBoardmanTest/testAlBoardmanTest50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions50@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Lottie_Example { 2 | umbrella header "Pods-Lottie-Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest50@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/SplitDimensions/testSplitDimensions100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest50@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Lottie_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Lottie_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_lottie_ios_Tests { 2 | umbrella header "Pods-lottie-ios_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest0@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/LoopPlayOnceTest/testLoopPlayOnceTest100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/TwitterHeartTest/testTwitterHeartTest100@2x.png -------------------------------------------------------------------------------- /Lottie.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Tests/ReferenceImages_64/HamburgerArrowTest/testHamburgerArrowTest50@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_lottie_ios_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_lottie_ios_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FBSnapshotTestCase : NSObject 3 | @end 4 | @implementation PodsDummy_FBSnapshotTestCase 5 | @end 6 | -------------------------------------------------------------------------------- /Example/lottie-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_100@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_100@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_15@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_25@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_25@2x.png -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/animations/lottie-ios/master/Lottie-Screenshot/Lottie-ScreenshotTests/ReferenceImages/LottieLogoTest1Spec/LottieLogo1_50@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Lottie_Example_MacOS { 2 | umbrella header "Pods-Lottie-Example-MacOS-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Lottie_Example_MacOS : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Lottie_Example_MacOS 5 | @end 6 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Lottie_Screenshot : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Lottie_Screenshot 5 | @end 6 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Lottie_ScreenshotTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Lottie_ScreenshotTests 5 | @end 6 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Lottie_ScreenshotUITests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Lottie_ScreenshotUITests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'Lottie-Example' do 4 | pod 'lottie-ios', :path => '../' 5 | 6 | target 'lottie-ios_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | 13 | target 'Lottie-Example-MacOS' do 14 | pod 'lottie-ios', :path => '../' 15 | end 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/lottie-ios-OSX-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/lottie-ios-iOS-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/lottie-ios.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/lottie-ios/TypingDemoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LATypingDemoViewController.h 3 | // LottieExamples 4 | // 5 | // Created by Brandon Withrow on 1/9/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TypingDemoViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/Example for lottie-macos/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Example for lottie-macos 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : NSViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/lottie-ios/LottieRootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LottieRootViewController.h 3 | // LottieExamples 4 | // 5 | // Created by brandon_withrow on 1/25/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface LottieRootViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Example for lottie-macos/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Example for lottie-macos 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /Example/Example for lottie-macos/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Example for lottie-macos 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - lottie-ios (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - lottie-ios (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | lottie-ios: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | lottie-ios: 446088d623e3c1d764b212bcd51a5f15147f9a6e 13 | 14 | PODFILE CHECKSUM: 6d1e1685b831b9c2307e9f025c2992df8d660bdb 15 | 16 | COCOAPODS: 1.2.0.rc.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - lottie-ios (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - lottie-ios (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | lottie-ios: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | lottie-ios: 446088d623e3c1d764b212bcd51a5f15147f9a6e 13 | 14 | PODFILE CHECKSUM: 6d1e1685b831b9c2307e9f025c2992df8d660bdb 15 | 16 | COCOAPODS: 1.2.0.rc.1 17 | -------------------------------------------------------------------------------- /Example/lottie-ios/AnimationExplorerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AnimationExplorerViewController.h 3 | // LottieExamples 4 | // 5 | // Created by brandon_withrow on 1/25/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AnimationExplorerViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/lottie-ios/AnimationTransitionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AnimationTransitionViewController.h 3 | // LottieExamples 4 | // 5 | // Created by brandon_withrow on 1/25/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AnimationTransitionViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Extensions/LOTHelpers.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTHelpers.h 3 | // Lottie 4 | // 5 | // Created by Brandon Withrow on 7/28/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #ifndef LOTHelpers_h 10 | #define LOTHelpers_h 11 | 12 | #import "UIColor+Expanded.h" 13 | #import "CGGeometry+LOTAdditions.h" 14 | 15 | #endif /* LOTHelpers_h */ 16 | -------------------------------------------------------------------------------- /Example/lottie-ios/LAAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LAAppDelegate.h 3 | // lottie-ios 4 | // 5 | // Created by Brandon Withrow on 01/26/2017. 6 | // Copyright (c) 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface LAAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTStrokeShapeLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTStrokeShapeLayer.h 3 | // Pods 4 | // 5 | // Created by Brandon Withrow on 2/7/17. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface LOTStrokeShapeLayer : CAShapeLayer 12 | 13 | @property CGFloat trimStart; 14 | @property CGFloat trimEnd; 15 | @property CGFloat trimOffset; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Example/lottie-ios/lottie-ios-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/lottie-ios/JSONExplorerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LAJSONExplorerViewController.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JSONExplorerViewController : UIViewController 12 | 13 | @property (nonatomic, copy) void (^completionBlock)(NSString *jsonURL); 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/lottie-ios/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // lottie-ios 4 | // 5 | // Created by Brandon Withrow on 01/26/2017. 6 | // Copyright (c) 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "LAAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LAAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/CALayer+Compat.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import 8 | #import 9 | 10 | @interface CALayer (Compat) 11 | 12 | @property (nonatomic, assign) BOOL allowsEdgeAntialiasing; 13 | 14 | @end 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/CALayer+Compat.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import "CALayer+Compat.h" 8 | 9 | @implementation CALayer (Compat) 10 | 11 | - (BOOL)allowsEdgeAntialiasing { return NO; } 12 | - (void)setAllowsEdgeAntialiasing:(BOOL)allowsEdgeAntialiasing { } 13 | 14 | @end 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_Lottie_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Lottie_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_lottie_ios_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_lottie_ios_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/19/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @protocol LOTAnimatableValue 13 | 14 | - (CAKeyframeAnimation *)animationForKeyPath:(NSString *)keypath; 15 | - (BOOL)hasAnimation; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_Lottie_Example_MacOSVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Lottie_Example_MacOSVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FBSnapshotTestCase/Core (2.1.4) 3 | - lottie-ios (1.0.4) 4 | 5 | DEPENDENCIES: 6 | - FBSnapshotTestCase/Core 7 | - lottie-ios (from `../`) 8 | 9 | EXTERNAL SOURCES: 10 | lottie-ios: 11 | :path: ../ 12 | 13 | SPEC CHECKSUMS: 14 | FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a 15 | lottie-ios: 8b2c5ba38105430a72f03ce54be90d8dac950161 16 | 17 | PODFILE CHECKSUM: 755b664bbd82adfe47e0d96dfc0bc4413b6ba38a 18 | 19 | COCOAPODS: 1.1.1 20 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FBSnapshotTestCase/Core (2.1.4) 3 | - lottie-ios (1.0.4) 4 | 5 | DEPENDENCIES: 6 | - FBSnapshotTestCase/Core 7 | - lottie-ios (from `../`) 8 | 9 | EXTERNAL SOURCES: 10 | lottie-ios: 11 | :path: ../ 12 | 13 | SPEC CHECKSUMS: 14 | FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a 15 | lottie-ios: 8b2c5ba38105430a72f03ce54be90d8dac950161 16 | 17 | PODFILE CHECKSUM: 755b664bbd82adfe47e0d96dfc0bc4413b6ba38a 18 | 19 | COCOAPODS: 1.1.1 20 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/CADisplayLink.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import 8 | 9 | @interface CADisplayLink : NSObject 10 | 11 | + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel; 12 | - (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode; 13 | - (void)invalidate; 14 | 15 | @end 16 | #endif 17 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTAnimatableLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableLayer.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/21/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LOTAnimatableLayer : CALayer 12 | 13 | - (instancetype)initWithDuration:(NSTimeInterval)duration NS_DESIGNATED_INITIALIZER; 14 | 15 | @property (nonatomic, readonly) NSTimeInterval laAnimationDuration; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTAnimatableLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableLayer.m 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/21/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimatableLayer.h" 10 | 11 | @implementation LOTAnimatableLayer 12 | 13 | - (instancetype)initWithDuration:(NSTimeInterval)duration { 14 | self = [super init]; 15 | if (self) { 16 | _laAnimationDuration = duration; 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTMaskLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTMaskLayer.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/22/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimatableLayer.h" 10 | #import "LOTModels.h" 11 | 12 | @interface LOTMaskLayer : LOTAnimatableLayer 13 | 14 | - (instancetype)initWithMasks:(NSArray *)masks inComposition:(LOTComposition *)comp; 15 | 16 | @property (nonatomic, readonly) NSArray *masks; 17 | 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimationCache/LOTAnimationCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationCache.h 3 | // Lottie 4 | // 5 | // Created by Brandon Withrow on 1/9/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class LOTComposition; 12 | 13 | @interface LOTAnimationCache : NSObject 14 | 15 | + (instancetype)sharedCache; 16 | 17 | - (void)addAnimation:(LOTComposition *)animation forKey:(NSString *)key; 18 | - (LOTComposition *)animationForKey:(NSString *)key; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /lottie-ios/Classes/PublicHeaders/Lottie.h: -------------------------------------------------------------------------------- 1 | // 2 | // Lottie.h 3 | // Pods 4 | // 5 | // Created by brandon_withrow on 1/27/17. 6 | // 7 | // 8 | @import Foundation; 9 | #ifndef Lottie_h 10 | #define Lottie_h 11 | 12 | //! Project version number for Lottie. 13 | FOUNDATION_EXPORT double LottieVersionNumber; 14 | 15 | //! Project version string for Lottie. 16 | FOUNDATION_EXPORT const unsigned char LottieVersionString[]; 17 | 18 | #import "LOTAnimationTransitionController.h" 19 | #import "LOTAnimationView.h" 20 | 21 | #endif /* Lottie_h */ 22 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LottieAnimationTestCase.h: -------------------------------------------------------------------------------- 1 | // 2 | // LottieAnimationTestCase.h 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LottieAnimationTestCase : FBSnapshotTestCase 13 | 14 | @property (nonatomic, strong) NSString *animationName; 15 | 16 | - (void)testAnimationProgress:(float)progress; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/NSValue+Compat.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import 8 | 9 | @interface NSValue (Compat) 10 | 11 | + (NSValue *)valueWithCGRect:(CGRect)rect; 12 | + (NSValue *)valueWithCGPoint:(CGPoint)point; 13 | 14 | @property (nonatomic, readonly) CGRect CGRectValue; 15 | @property(nonatomic, readonly) CGPoint CGPointValue; 16 | 17 | @end 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /Example/lottie-ios/AnimatedTextField.h: -------------------------------------------------------------------------------- 1 | // 2 | // LAAnimatedTextField.h 3 | // LottieExamples 4 | // 5 | // Created by Brandon Withrow on 1/10/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AnimatedTextField : UIView 12 | 13 | @property (nonatomic, assign) NSInteger fontSize; 14 | @property (nonatomic, copy) NSString *text; 15 | @property (nonatomic, assign) UIEdgeInsets scrollInsets; 16 | 17 | - (void)changeCharactersInRange:(NSRange)range toString:(NSString *)replacementString; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Extensions/CAAnimationGroup+LOTAnimatableGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAAnimationGroup+LOTAnimatableGroup.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/19/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTAnimatableValue.h" 11 | 12 | @interface CAAnimationGroup (LOTAnimatableGroup) 13 | 14 | + (nullable CAAnimationGroup *)LOT_animationGroupForAnimatablePropertiesWithKeyPaths:(nonnull NSDictionary> *)properties; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/lottie-ios-OSX-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "LOTAnimationTransitionController.h" 14 | #import "LOTAnimationView.h" 15 | #import "LOTAnimationView_Compat.h" 16 | #import "Lottie.h" 17 | 18 | FOUNDATION_EXPORT double LottieVersionNumber; 19 | FOUNDATION_EXPORT const unsigned char LottieVersionString[]; 20 | 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/lottie-ios-iOS-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "LOTAnimationTransitionController.h" 14 | #import "LOTAnimationView.h" 15 | #import "LOTAnimationView_Compat.h" 16 | #import "Lottie.h" 17 | 18 | FOUNDATION_EXPORT double LottieVersionNumber; 19 | FOUNDATION_EXPORT const unsigned char LottieVersionString[]; 20 | 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableScaleValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableScaleValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/11/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTAnimatableValue.h" 11 | 12 | @interface LOTAnimatableScaleValue : NSObject 13 | 14 | - (instancetype)initWithScaleValues:(NSDictionary *)scaleValues frameRate:(NSNumber *)frameRate; 15 | 16 | @property (nonatomic, readonly) CATransform3D initialScale; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTLayerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTLayerView.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTPlatformCompat.h" 10 | #import "LOTAnimatableLayer.h" 11 | 12 | #import "LOTModels.h" 13 | 14 | @interface LOTLayerView : LOTAnimatableLayer 15 | 16 | - (instancetype)initWithModel:(LOTLayer *)model inComposition:(LOTComposition *)comp; 17 | 18 | @property (nonatomic, readonly) LOTLayer *layerModel; 19 | @property (nonatomic, assign) BOOL debugModeOn; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/lottie-ios-iOS.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableBoundsValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableBoundsValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/20/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LOTAnimatableValue.h" 12 | 13 | @interface LOTAnimatableBoundsValue : NSObject 14 | 15 | - (instancetype)initWithSizeValues:(NSDictionary *)sizeValue frameRate:(NSNumber *)frameRate; 16 | 17 | @property (nonatomic, readonly) CGRect initialBounds; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Lottie" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Lottie" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeCircle.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeCircle.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | @class LOTAnimatablePointValue; 11 | @class LOTAnimatableScaleValue; 12 | 13 | @interface LOTShapeCircle : NSObject 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 16 | 17 | @property (nonatomic, readonly) LOTAnimatablePointValue *position; 18 | @property (nonatomic, readonly) LOTAnimatablePointValue *size; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapePath.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapePath.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class LOTAnimatableShapeValue; 12 | 13 | @interface LOTShapePath : NSObject 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 16 | 17 | @property (nonatomic, readonly) BOOL closed; 18 | @property (nonatomic, readonly) NSNumber *index; 19 | @property (nonatomic, readonly) LOTAnimatableShapeValue *shapePath; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'Lottie-Screenshot' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks! 7 | 8 | # Pods for Lottie-Screenshot 9 | 10 | target 'Lottie-ScreenshotTests' do 11 | inherit! :search_paths 12 | # Pods for testing 13 | pod 'FBSnapshotTestCase/Core' 14 | pod 'lottie-ios', :path => '../' 15 | end 16 | 17 | target 'Lottie-ScreenshotUITests' do 18 | inherit! :search_paths 19 | # Pods for testing 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableShapeValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableShapeValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 6/23/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTPlatformCompat.h" 11 | #import "LOTAnimatableValue.h" 12 | 13 | @interface LOTAnimatableShapeValue : NSObject 14 | 15 | - (instancetype)initWithShapeValues:(NSDictionary *)shapeValues frameRate:(NSNumber *)frameRate closed:(BOOL)closed; 16 | 17 | @property (nonatomic, readonly) UIBezierPath *initialShape; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathFill.m: -------------------------------------------------------------------------------- 1 | // 2 | // TrimPathFill.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface TrimPathFill : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation TrimPathFill 18 | 19 | - (void)setUp { 20 | self.animationName = @"TrimPathFill"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testTrimPathFill100 { 25 | [self testAnimationProgress:1]; 26 | } 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableColorValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 6/23/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LOTAnimatableValue.h" 12 | #import "LOTPlatformCompat.h" 13 | 14 | @interface LOTAnimatableColorValue : NSObject 15 | 16 | - (instancetype)initWithColorValues:(NSDictionary *)colorValues frameRate:(NSNumber *)frameRate; 17 | 18 | @property (nonatomic, readonly) UIColor *initialColor; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Example for lottie-macos/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Example for lottie-macos 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 18 | // Insert code here to initialize your application 19 | } 20 | 21 | 22 | - (void)applicationWillTerminate:(NSNotification *)aNotification { 23 | // Insert code here to tear down your application 24 | } 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShape.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LOTShapeGroup : NSObject 13 | 14 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate compBounds:(CGRect)compBounds; 15 | 16 | @property (nonatomic, readonly) NSArray *items; 17 | 18 | + (id)shapeItemWithJSON:(NSDictionary *)itemJSON frameRate:(NSNumber *)frameRate compBounds:(CGRect)compBounds; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/lottie-ios-OSX.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "AppKit" -framework "CoreVideo" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeTrimPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeTrimPath.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/26/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | @class LOTAnimatableNumberValue; 11 | 12 | @interface LOTShapeTrimPath : NSObject 13 | 14 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 15 | 16 | @property (nonatomic, readonly) LOTAnimatableNumberValue *start; 17 | @property (nonatomic, readonly) LOTAnimatableNumberValue *end; 18 | @property (nonatomic, readonly) LOTAnimatableNumberValue *offset; 19 | @end 20 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @interface UIApplication (StrictKeyWindow) 14 | 15 | /** 16 | @return The receiver's @c keyWindow. Raises an assertion if @c nil. 17 | */ 18 | - (UIWindow *)fb_strictKeyWindow; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj/xcuserdata/ 2 | Example/lottie-ios.xcworkspace/xcuserdata/ 3 | Example/lottie-ios.xcodeproj/xcuserdata/ 4 | LottieExamples/LottieExamples.xcodeproj/xcuserdata/ 5 | LottieExamples.xcworkspace/xcuserdata/ 6 | Lottie/Lottie.xcodeproj/xcuserdata/ 7 | UserInterfaceState.xcuserstate 8 | xample/lottie-ios.xcodeproj/xcuserdata 9 | Lottie.xcodeproj/xcuserdata/ 10 | Example/lottie-ios.xcworkspace/xcuserdata/ 11 | Example/lottie-ios.xcodeproj/xcuserdata/ 12 | .idea/ 13 | build/ 14 | Lottie-Screenshot/Lottie-Screenshot.xcworkspace/xcuserdata/ 15 | Lottie-Screenshot/Lottie-Screenshot.xcodeproj/xcuserdata/ 16 | Lottie-Screenshot/Pods/Pods.xcodeproj/xcuserdata/ 17 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view, typically from a nib. 20 | } 21 | 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX/Lottie.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Lottie" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS.release.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX/Lottie.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Lottie" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/NSValue+Compat.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import "NSValue+Compat.h" 8 | 9 | @implementation NSValue (Compat) 10 | 11 | + (NSValue *)valueWithCGRect:(CGRect)rect { 12 | return [self valueWithRect:rect]; 13 | } 14 | 15 | + (NSValue *)valueWithCGPoint:(CGPoint)point { 16 | return [self valueWithPoint:point]; 17 | } 18 | 19 | - (CGRect)CGRectValue { 20 | return self.rectValue; 21 | } 22 | 23 | - (CGPoint)CGPointValue { 24 | return self.pointValue; 25 | } 26 | 27 | @end 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeFill.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeFill.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class LOTAnimatableColorValue; 12 | @class LOTAnimatableNumberValue; 13 | 14 | @interface LOTShapeFill : NSObject 15 | 16 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 17 | 18 | @property (nonatomic, readonly) BOOL fillEnabled; 19 | @property (nonatomic, readonly) LOTAnimatableColorValue *color; 20 | @property (nonatomic, readonly) LOTAnimatableNumberValue *opacity; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/lottie-ios/lottie-ios.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/lottie-ios" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 4 | OTHER_LDFLAGS = -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTShapeLayerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeLayerView.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 7/13/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimatableLayer.h" 10 | #import "LOTModels.h" 11 | 12 | @interface LOTShapeLayerView : LOTAnimatableLayer 13 | 14 | - (instancetype)initWithShape:(LOTShapePath *)shape 15 | fill:(LOTShapeFill *)fill 16 | stroke:(LOTShapeStroke *)stroke 17 | trim:(LOTShapeTrimPath *)trim 18 | transform:(LOTShapeTransform *)transform 19 | withDuration:(NSTimeInterval)duration; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeRectangle.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeRectangle.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | @class LOTAnimatableBoundsValue; 11 | @class LOTAnimatablePointValue; 12 | @class LOTAnimatableNumberValue; 13 | 14 | @interface LOTShapeRectangle : NSObject 15 | 16 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 17 | 18 | @property (nonatomic, readonly) LOTAnimatablePointValue *position; 19 | @property (nonatomic, readonly) LOTAnimatablePointValue *size; 20 | @property (nonatomic, readonly) LOTAnimatableNumberValue *cornerRadius; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatablePointValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatablePointValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 6/23/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LOTAnimatableValue.h" 12 | 13 | @interface LOTAnimatablePointValue : NSObject 14 | 15 | - (instancetype)initWithPointValues:(NSDictionary *)pointValues frameRate:(NSNumber *)frameRate; 16 | - (void)remapPointsFromBounds:(CGRect)frombounds toBounds:(CGRect)toBounds; 17 | 18 | @property (nonatomic, readonly) CGPoint initialPoint; 19 | @property (nonatomic, assign) BOOL usePathAnimation; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lottie-ios", 3 | "version": "1.0.4", 4 | "description": "Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovin and renders the vector animations natively on mobile and through React Native!", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/airbnb/lottie-ios.git" 12 | }, 13 | "author": "Brandon Withrow ", 14 | "license": "Apache-2.0", 15 | "bugs": { 16 | "url": "https://github.com/airbnb/lottie-ios/issues" 17 | }, 18 | "homepage": "https://github.com/airbnb/lottie-ios#readme" 19 | } 20 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/AlarmTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AlarmTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface AlarmTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation AlarmTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"Alarm"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testAlarm0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testAlarm50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testAlarm100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/PinJump.m: -------------------------------------------------------------------------------- 1 | // 2 | // PinJump.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface PinJump : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation PinJump 18 | 19 | - (void)setUp { 20 | self.animationName = @"PinJump"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testPinJump0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testPinJump50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testPinJump100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/AllSetTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AllSetTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface AllSetTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation AllSetTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"AllSet"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testAllSet0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testAllSet50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testAllSet100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTEllipseShapeLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTEllipseShapeLayer.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/26/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimatableLayer.h" 10 | #import "LOTModels.h" 11 | 12 | @interface LOTEllipseShapeLayer : LOTAnimatableLayer 13 | 14 | - (instancetype)initWithEllipseShape:(LOTShapeCircle *)circleShape 15 | fill:(LOTShapeFill *)fill 16 | stroke:(LOTShapeStroke *)stroke 17 | trim:(LOTShapeTrimPath *)trim 18 | transform:(LOTShapeTransform *)transform 19 | withDuration:(NSTimeInterval)duration; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // lottie-iosTests.m 3 | // lottie-iosTests 4 | // 5 | // Created by Brandon Withrow on 01/26/2017. 6 | // Copyright (c) 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LightBulb.m: -------------------------------------------------------------------------------- 1 | // 2 | // LightBulb.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface LightBulb : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation LightBulb 18 | 19 | - (void)setUp { 20 | self.animationName = @"LightBulb"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testLightBulb0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testLightBulb50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testLightBulb100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/lottie-ios.xcodeproj/xcuserdata/brandon_withrow.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | lottie-ios-Example.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 6003F589195388D20070C39A 16 | 17 | primary 18 | 19 | 20 | 6003F5AD195388D20070C39A 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTRectShapeLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTRectShapeLayer.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/20/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTModels.h" 11 | #import "LOTAnimatableLayer.h" 12 | 13 | @interface LOTRectShapeLayer : LOTAnimatableLayer 14 | 15 | - (instancetype)initWithRectShape:(LOTShapeRectangle *)rectShape 16 | fill:(LOTShapeFill *)fill 17 | stroke:(LOTShapeStroke *)stroke 18 | trim:(LOTShapeTrimPath *)trim 19 | transform:(LOTShapeTransform *)transform 20 | withDuration:(NSTimeInterval)duration; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/PathStrokeTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // PathStrokeTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface PathStrokeTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation PathStrokeTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"pathStrokeTests"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testPathStroke0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testPathStroke50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testPathStroke100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/CheckSwitchTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // CheckSwitchTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface CheckSwitchTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation CheckSwitchTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"CheckSwitch"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testCheckSwitch0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testCheckSwitch50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testCheckSwitch100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/EmpyStateTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // EmpyStateTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface EmpyStateTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation EmpyStateTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"EmptyState"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testEmpyStateTest0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testEmpyStateTest50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testEmpyStateTest100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathsFull.m: -------------------------------------------------------------------------------- 1 | // 2 | // TrimPathsFull.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface TrimPathsFull : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation TrimPathsFull 18 | 19 | - (void)setUp { 20 | self.animationName = @"TrimPathsFull"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testTrimPathsFull0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testTrimPathsFull50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testTrimPathsFull100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/AlBoardmanTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AlBoardmanTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface AlBoardmanTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation AlBoardmanTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"9squares-AlBoardman"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testAlBoardmanTest0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testAlBoardmanTest50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testAlBoardmanTest100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/SplitDimensions.m: -------------------------------------------------------------------------------- 1 | // 2 | // SplitDimensions.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface SplitDimensions : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation SplitDimensions 18 | 19 | - (void)setUp { 20 | self.animationName = @"SplitDimensions"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testSplitDimensions0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testSplitDimensions50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testSplitDimensions100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LoopPlayOnceTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // LoopPlayOnceTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface LoopPlayOnceTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation LoopPlayOnceTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"LoopPlayOnce"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testLoopPlayOnceTest0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testLoopPlayOnceTest50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testLoopPlayOnceTest100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/TwitterHeartTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // TwitterHeartTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface TwitterHeartTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation TwitterHeartTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"TwitterHeart"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testTwitterHeartTest0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testTwitterHeartTest50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testTwitterHeartTest100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/HamburgerArrowTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // HamburgerArrowTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface HamburgerArrowTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation HamburgerArrowTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"HamburgerArrow"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testHamburgerArrowTest0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testHamburgerArrowTest50 { 29 | [self testAnimationProgress:0.5]; 30 | } 31 | 32 | - (void)testHamburgerArrowTest100 { 33 | [self testAnimationProgress:1]; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTComposition.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTScene.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class LOTLayer; 13 | 14 | @interface LOTComposition : NSObject 15 | 16 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary; 17 | 18 | @property (nonatomic, readonly) NSArray *layers; 19 | @property (nonatomic, readonly) CGRect compBounds; 20 | @property (nonatomic, readonly) NSNumber *startFrame; 21 | @property (nonatomic, readonly) NSNumber *endFrame; 22 | @property (nonatomic, readonly) NSNumber *framerate; 23 | @property (nonatomic, readonly) NSTimeInterval timeDuration; 24 | 25 | - (LOTLayer *)layerModelForID:(NSNumber *)layerID; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 6 | OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableProperties/LOTAnimatableNumberValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimatableNumberValue.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 6/23/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LOTAnimatableValue.h" 12 | 13 | @interface LOTAnimatableNumberValue : NSObject 14 | 15 | - (instancetype)initWithNumberValues:(NSDictionary *)numberValues frameRate:(NSNumber *)frameRate; 16 | - (void)remapValuesFromMin:(NSNumber *)fromMin 17 | fromMax:(NSNumber *)fromMax 18 | toMin:(NSNumber *)toMin 19 | toMax:(NSNumber *)toMax; 20 | 21 | - (void)remapValueWithBlock:(CGFloat (^)(CGFloat inValue))remapBlock; 22 | 23 | @property (nonatomic, readonly) NSNumber *initialValue; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/LOTPlatformCompat.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTPlatformCompat.h 3 | // Lottie 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright (c) 2017 Airbnb. All rights reserved. 7 | // 8 | 9 | #ifndef LOTPlatformCompat_h 10 | #define LOTPlatformCompat_h 11 | 12 | #import "TargetConditionals.h" 13 | 14 | #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR 15 | 16 | #import 17 | 18 | #else 19 | 20 | #import 21 | #import "UIColor.h" 22 | #import "UIBezierPath.h" 23 | #import "CADisplayLink.h" 24 | #import "CALayer+Compat.h" 25 | #import "NSValue+Compat.h" 26 | 27 | NS_INLINE NSString *NSStringFromCGRect(CGRect rect) { 28 | return NSStringFromRect(rect); 29 | } 30 | 31 | NS_INLINE NSString *NSStringFromCGPoint(CGPoint point) { 32 | return NSStringFromPoint(point); 33 | } 34 | 35 | typedef NSEdgeInsets UIEdgeInsets; 36 | 37 | #endif 38 | #endif 39 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @interface UIImage (Snapshot) 14 | 15 | /// Uses renderInContext: to get a snapshot of the layer. 16 | + (UIImage *)fb_imageForLayer:(CALayer *)layer; 17 | 18 | /// Uses renderInContext: to get a snapshot of the view layer. 19 | + (UIImage *)fb_imageForViewLayer:(UIView *)view; 20 | 21 | /// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. 22 | + (UIImage *)fb_imageForView:(UIView *)view; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/Hosts.m: -------------------------------------------------------------------------------- 1 | // 2 | // Hosts.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface Hosts : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation Hosts 18 | 19 | - (void)setUp { 20 | self.animationName = @"Hosts"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testHosts0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testHosts15 { 29 | [self testAnimationProgress:0.15]; 30 | } 31 | 32 | - (void)testHosts25 { 33 | [self testAnimationProgress:0.25]; 34 | } 35 | 36 | - (void)testHosts50 { 37 | [self testAnimationProgress:0.5]; 38 | } 39 | 40 | - (void)testHosts100 { 41 | [self testAnimationProgress:1]; 42 | } 43 | 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/CityTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // CityTest.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | 14 | @interface CityTest : LottieAnimationTestCase 15 | 16 | @end 17 | 18 | @implementation CityTest 19 | 20 | - (void)setUp { 21 | self.animationName = @"City"; 22 | [super setUp]; 23 | } 24 | 25 | - (void)testCity0 { 26 | [self testAnimationProgress:0]; 27 | } 28 | 29 | - (void)testCity15 { 30 | [self testAnimationProgress:0.15]; 31 | } 32 | 33 | - (void)testCity25 { 34 | [self testAnimationProgress:0.25]; 35 | } 36 | 37 | - (void)testCity50 { 38 | [self testAnimationProgress:0.5]; 39 | } 40 | 41 | - (void)testCity100 { 42 | [self testAnimationProgress:1]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTMask.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTMask.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | @class LOTAnimatableShapeValue; 11 | @class LOTAnimatableNumberValue; 12 | 13 | typedef enum : NSUInteger { 14 | LOTMaskModeAdd, 15 | LOTMaskModeSubtract, 16 | LOTMaskModeIntersect, 17 | LOTMaskModeUnknown 18 | } LOTMaskMode; 19 | 20 | @interface LOTMask : NSObject 21 | 22 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 23 | 24 | @property (nonatomic, readonly) BOOL closed; 25 | @property (nonatomic, readonly) BOOL inverted; 26 | @property (nonatomic, readonly) LOTMaskMode maskMode; 27 | @property (nonatomic, readonly) LOTAnimatableShapeValue *maskPath; 28 | @property (nonatomic, readonly) LOTAnimatableNumberValue *opacity; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTModels.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTModels.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #ifndef LOTModels_h 10 | #define LOTModels_h 11 | 12 | #import "CAAnimationGroup+LOTAnimatableGroup.h" 13 | #import "LOTAnimatableBoundsValue.h" 14 | #import "LOTAnimatableColorValue.h" 15 | #import "LOTAnimatableNumberValue.h" 16 | #import "LOTAnimatablePointValue.h" 17 | #import "LOTAnimatableScaleValue.h" 18 | #import "LOTAnimatableShapeValue.h" 19 | #import "LOTAnimatableValue.h" 20 | #import "LOTComposition.h" 21 | #import "LOTLayer.h" 22 | #import "LOTMask.h" 23 | #import "LOTShapeCircle.h" 24 | #import "LOTShapeFill.h" 25 | #import "LOTShapeGroup.h" 26 | #import "LOTShapePath.h" 27 | #import "LOTShapeRectangle.h" 28 | #import "LOTShapeStroke.h" 29 | #import "LOTShapeTransform.h" 30 | #import "LOTShapeTrimPath.h" 31 | 32 | #endif /* LOTModels_h */ 33 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapePath.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapePath.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapePath.h" 10 | #import "LOTAnimatableShapeValue.h" 11 | 12 | @implementation LOTShapePath 13 | 14 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 15 | self = [super init]; 16 | if (self) { 17 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 18 | } 19 | return self; 20 | } 21 | 22 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 23 | _index = jsonDictionary[@"ind"]; 24 | _closed = [jsonDictionary[@"closed"] boolValue]; 25 | NSDictionary *shape = jsonDictionary[@"ks"]; 26 | if (shape) { 27 | _shapePath = [[LOTAnimatableShapeValue alloc] initWithShapeValues:shape frameRate:frameRate closed:_closed]; 28 | } 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-OSX/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/lottie-ios-iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTestB.m: -------------------------------------------------------------------------------- 1 | // 2 | // LottieLogoTestB.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "LottieAnimationTestCase.h" 12 | 13 | @interface LottieLogoTestB : LottieAnimationTestCase 14 | @end 15 | 16 | @implementation LottieLogoTestB 17 | 18 | - (void)setUp { 19 | self.animationName = @"LottieLogo2"; 20 | [super setUp]; 21 | } 22 | 23 | - (void)testLottieLogo0 { 24 | [self testAnimationProgress:0]; 25 | } 26 | 27 | - (void)testLottieLogo15 { 28 | [self testAnimationProgress:0.15]; 29 | } 30 | 31 | - (void)testLottieLogo25 { 32 | [self testAnimationProgress:0.25]; 33 | } 34 | 35 | - (void)testLottieLogo50 { 36 | [self testAnimationProgress:0.5]; 37 | } 38 | 39 | - (void)testLottieLogo100 { 40 | [self testAnimationProgress:1]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // Lottie_ScreenshotUITests.m 3 | // Lottie-ScreenshotUITests 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LottieAnimationTestCase.h" 11 | #import 12 | 13 | @interface LottieLogoTest : LottieAnimationTestCase 14 | 15 | @end 16 | 17 | @implementation LottieLogoTest 18 | 19 | - (void)setUp { 20 | self.animationName = @"LottieLogo1"; 21 | [super setUp]; 22 | } 23 | 24 | - (void)testLottieLogo0 { 25 | [self testAnimationProgress:0]; 26 | } 27 | 28 | - (void)testLottieLogo15 { 29 | [self testAnimationProgress:0.15]; 30 | } 31 | 32 | - (void)testLottieLogo25 { 33 | [self testAnimationProgress:0.25]; 34 | } 35 | 36 | - (void)testLottieLogo50 { 37 | [self testAnimationProgress:0.5]; 38 | } 39 | 40 | - (void)testLottieLogo100 { 41 | [self testAnimationProgress:1]; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /lottie-ios/Classes/PublicHeaders/LOTAnimationView_Compat.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationView_Compat.h 3 | // Lottie 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright (c) 2017 Airbnb. All rights reserved. 7 | // 8 | 9 | #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR 10 | 11 | #import 12 | @compatibility_alias LOTView UIView; 13 | 14 | #else 15 | 16 | #import 17 | @compatibility_alias LOTView NSView; 18 | 19 | typedef NS_ENUM(NSInteger, LOTViewContentMode) { 20 | LOTViewContentModeScaleToFill, 21 | LOTViewContentModeScaleAspectFit, 22 | LOTViewContentModeScaleAspectFill, 23 | LOTViewContentModeRedraw, 24 | LOTViewContentModeCenter, 25 | LOTViewContentModeTop, 26 | LOTViewContentModeBottom, 27 | LOTViewContentModeLeft, 28 | LOTViewContentModeRight, 29 | LOTViewContentModeTopLeft, 30 | LOTViewContentModeTopRight, 31 | LOTViewContentModeBottomLeft, 32 | LOTViewContentModeBottomRight, 33 | }; 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-lottie-ios_Tests/Pods-lottie-ios_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeTransform.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeTransform.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class LOTAnimatableNumberValue; 13 | @class LOTAnimatablePointValue; 14 | @class LOTAnimatableScaleValue; 15 | 16 | @interface LOTShapeTransform : NSObject 17 | 18 | + (instancetype)transformIdentityWithCompBounds:(CGRect)compBounds; 19 | 20 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate compBounds:(CGRect)compBounds; 21 | 22 | @property (nonatomic, readonly) CGRect compBounds; 23 | @property (nonatomic, readonly) LOTAnimatablePointValue *position; 24 | @property (nonatomic, readonly) LOTAnimatablePointValue *anchor; 25 | @property (nonatomic, readonly) LOTAnimatableScaleValue *scale; 26 | @property (nonatomic, readonly) LOTAnimatableNumberValue *rotation; 27 | @property (nonatomic, readonly) LOTAnimatableNumberValue *opacity; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Example for lottie-macos/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Example for lottie-macos 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import 11 | 12 | @interface ViewController () 13 | 14 | @property (nonatomic, strong) LOTAnimationView *lottieLogo; 15 | 16 | @end 17 | 18 | @implementation ViewController 19 | 20 | - (void)viewDidLoad { 21 | [super viewDidLoad]; 22 | 23 | self.lottieLogo = [LOTAnimationView animationNamed:@"LottieLogo1"]; 24 | self.lottieLogo.contentMode = LOTViewContentModeScaleAspectFill; 25 | self.lottieLogo.frame = self.view.bounds; 26 | self.lottieLogo.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; 27 | 28 | [self.view addSubview:self.lottieLogo]; 29 | } 30 | 31 | - (void)viewDidAppear { 32 | [super viewDidAppear]; 33 | [self.lottieLogo play]; 34 | } 35 | 36 | - (void)viewDidDisappear { 37 | [super viewDidDisappear]; 38 | [self.lottieLogo pause]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"FBSnapshotTestCase" -l"lottie-ios" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Target Support Files/Pods-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/lottie-ios" 5 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/lottie-ios" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"FBSnapshotTestCase" -l"lottie-ios" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTGroupLayerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTGroupLayerView.h 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/14/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTAnimatableLayer.h" 11 | 12 | @class LOTShapeGroup; 13 | @class LOTShapeTransform; 14 | @class LOTShapeFill; 15 | @class LOTShapeStroke; 16 | @class LOTShapeTrimPath; 17 | 18 | @interface LOTGroupLayerView : LOTAnimatableLayer 19 | 20 | - (instancetype)initWithShapeGroup:(LOTShapeGroup *)shapeGroup 21 | transform:(LOTShapeTransform *)previousTransform 22 | fill:(LOTShapeFill *)previousFill 23 | stroke:(LOTShapeStroke *)previousStroke 24 | trimPath:(LOTShapeTrimPath *)previousTrimPath 25 | withDuration:(NSTimeInterval)duration; 26 | 27 | @property (nonatomic, readonly) LOTShapeGroup *shapeGroup; 28 | @property (nonatomic, readonly) LOTShapeTransform *shapeTransform; 29 | @property (nonatomic, assign) BOOL debugModeOn; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @implementation UIApplication (StrictKeyWindow) 14 | 15 | - (UIWindow *)fb_strictKeyWindow 16 | { 17 | UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 18 | if (!keyWindow) { 19 | [NSException raise:@"FBSnapshotTestCaseNilKeyWindowException" 20 | format:@"Snapshot tests must be hosted by an application with a key window. Please ensure your test" 21 | " host sets up a key window at launch (either via storyboards or programmatically) and doesn't" 22 | " do anything to remove it while snapshot tests are running."]; 23 | } 24 | return keyWindow; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeCircle.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeCircle.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapeCircle.h" 10 | #import "LOTAnimatablePointValue.h" 11 | #import "LOTAnimatableScaleValue.h" 12 | 13 | @implementation LOTShapeCircle 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 16 | self = [super init]; 17 | if (self) { 18 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 24 | NSDictionary *position = jsonDictionary[@"p"]; 25 | if (position) { 26 | _position = [[LOTAnimatablePointValue alloc] initWithPointValues:position frameRate:frameRate]; 27 | _position.usePathAnimation = NO; 28 | } 29 | 30 | NSDictionary *size= jsonDictionary[@"s"]; 31 | if (size) { 32 | _size = [[LOTAnimatablePointValue alloc] initWithPointValues:size frameRate:frameRate]; 33 | _size.usePathAnimation = NO; 34 | } 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Assets/TypeFace/BlinkingCursor.json: -------------------------------------------------------------------------------- 1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[100],"e":[0]},{"t":17}]},"r":{"k":0},"p":{"k":[48,50,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.5,-40.5],[-36.5,43]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"ResizerTemp","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,51,0]},"a":{"k":[250,300,0]},"s":{"k":[15,15,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":21,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":21,"fr":25,"w":80,"h":100} -------------------------------------------------------------------------------- /Example/Example for lottie-macos/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2017 Brandon Withrow. All rights reserved. 27 | NSMainStoryboardFile 28 | Main 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/SplitDimensions.json: -------------------------------------------------------------------------------- 1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"s":true,"x":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[20.5],"e":[92]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[92],"e":[20.5]},{"t":119}]},"y":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[77.75],"e":[24.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":68,"s":[24.5],"e":[74.75]},{"t":119}]}},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[26.135,26.135]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":0,"op":120,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":120,"fr":60,"w":100,"h":100} -------------------------------------------------------------------------------- /Example/Example for lottie-macos/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeStroke.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeStroke.h 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class LOTAnimatableColorValue; 12 | @class LOTAnimatableNumberValue; 13 | 14 | typedef enum : NSUInteger { 15 | LOTLineCapTypeButt, 16 | LOTLineCapTypeRound, 17 | LOTLineCapTypeUnknown 18 | } LOTLineCapType; 19 | 20 | typedef enum : NSUInteger { 21 | LOTLineJoinTypeMiter, 22 | LOTLineJoinTypeRound, 23 | LOTLineJoinTypeBevel 24 | } LOTLineJoinType; 25 | 26 | @interface LOTShapeStroke : NSObject 27 | 28 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate; 29 | 30 | @property (nonatomic, readonly) BOOL fillEnabled; 31 | @property (nonatomic, readonly) LOTAnimatableColorValue *color; 32 | @property (nonatomic, readonly) LOTAnimatableNumberValue *opacity; 33 | @property (nonatomic, readonly) LOTAnimatableNumberValue *width; 34 | @property (nonatomic, readonly) LOTLineCapType capType; 35 | @property (nonatomic, readonly) LOTLineJoinType joinType; 36 | 37 | @property (nonatomic, readonly) NSArray *lineDashPattern; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /lottie-ios/Classes/PublicHeaders/LOTAnimationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationView 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LOTAnimationView_Compat.h" 11 | 12 | typedef void (^LOTAnimationCompletionBlock)(BOOL animationFinished); 13 | 14 | @interface LOTAnimationView : LOTView 15 | 16 | + (instancetype)animationNamed:(NSString *)animationName; 17 | + (instancetype)animationFromJSON:(NSDictionary *)animationJSON; 18 | 19 | - (instancetype)initWithContentsOfURL:(NSURL *)url; 20 | 21 | @property (nonatomic, readonly) BOOL isAnimationPlaying; 22 | @property (nonatomic, assign) BOOL loopAnimation; 23 | @property (nonatomic, assign) CGFloat animationProgress; 24 | @property (nonatomic, assign) CGFloat animationSpeed; 25 | @property (nonatomic, readonly) CGFloat animationDuration; 26 | 27 | - (void)playWithCompletion:(LOTAnimationCompletionBlock)completion; 28 | - (void)play; 29 | - (void)pause; 30 | 31 | - (void)addSubview:(LOTView *)view 32 | toLayerNamed:(NSString *)layer; 33 | 34 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 35 | @property (nonatomic) LOTViewContentMode contentMode; 36 | #endif 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeFill.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeFill.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapeFill.h" 10 | #import "LOTAnimatableNumberValue.h" 11 | #import "LOTAnimatableColorValue.h" 12 | 13 | @implementation LOTShapeFill 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 16 | self = [super init]; 17 | if (self) { 18 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 24 | NSDictionary *color = jsonDictionary[@"c"]; 25 | if (color) { 26 | _color = [[LOTAnimatableColorValue alloc] initWithColorValues:color frameRate:frameRate]; 27 | } 28 | 29 | NSDictionary *opacity = jsonDictionary[@"o"]; 30 | if (opacity) { 31 | _opacity = [[LOTAnimatableNumberValue alloc] initWithNumberValues:opacity frameRate:frameRate]; 32 | [_opacity remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; 33 | } 34 | 35 | NSNumber *fillEnabled = jsonDictionary[@"fillEnabled"]; 36 | _fillEnabled = fillEnabled.boolValue; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeTrimPath.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeTrimPath.m 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/26/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapeTrimPath.h" 10 | #import "LOTAnimatableNumberValue.h" 11 | 12 | @implementation LOTShapeTrimPath 13 | 14 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 15 | self = [super init]; 16 | if (self) { 17 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 18 | } 19 | return self; 20 | } 21 | 22 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 23 | NSDictionary *start = jsonDictionary[@"s"]; 24 | if (start) { 25 | _start = [[LOTAnimatableNumberValue alloc] initWithNumberValues:start frameRate:frameRate]; 26 | [_start remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; 27 | } 28 | 29 | NSDictionary *end = jsonDictionary[@"e"]; 30 | if (end) { 31 | _end = [[LOTAnimatableNumberValue alloc] initWithNumberValues:end frameRate:frameRate]; 32 | [_end remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; 33 | } 34 | 35 | NSDictionary *offset = jsonDictionary[@"o"]; 36 | if (offset) { 37 | _offset = [[LOTAnimatableNumberValue alloc] initWithNumberValues:offset frameRate:frameRate]; 38 | } 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeRectangle.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeRectangle.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapeRectangle.h" 10 | #import "LOTAnimatableBoundsValue.h" 11 | #import "LOTAnimatablePointValue.h" 12 | #import "LOTAnimatableNumberValue.h" 13 | 14 | @implementation LOTShapeRectangle 15 | 16 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 17 | self = [super init]; 18 | if (self) { 19 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 20 | } 21 | return self; 22 | } 23 | 24 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 25 | NSDictionary *position = jsonDictionary[@"p"]; 26 | if (position) { 27 | _position = [[LOTAnimatablePointValue alloc] initWithPointValues:position frameRate:frameRate]; 28 | _position.usePathAnimation = NO; 29 | } 30 | 31 | NSDictionary *cornerRadius = jsonDictionary[@"r"]; 32 | if (cornerRadius) { 33 | _cornerRadius = [[LOTAnimatableNumberValue alloc] initWithNumberValues:cornerRadius frameRate:frameRate]; 34 | } 35 | 36 | NSDictionary *size = jsonDictionary[@"s"]; 37 | if (size) { 38 | _size = [[LOTAnimatablePointValue alloc] initWithPointValues:size frameRate:frameRate]; 39 | } 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/UIColor.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor.h 3 | // Lottie 4 | // 5 | // Created by Oleksii Pavlovskyi on 2/2/17. 6 | // Copyright © 2017 Airbnb. All rights reserved. 7 | // 8 | 9 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 10 | #import 11 | #import 12 | 13 | @interface UIColor : NSObject 14 | 15 | + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 16 | + (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha; 17 | + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 18 | + (UIColor *)colorWithCGColor:(CGColorRef)cgColor; 19 | 20 | + (UIColor *)blackColor; 21 | + (UIColor *)darkGrayColor; 22 | + (UIColor *)lightGrayColor; 23 | + (UIColor *)whiteColor; 24 | + (UIColor *)grayColor; 25 | + (UIColor *)redColor; 26 | + (UIColor *)greenColor; 27 | + (UIColor *)blueColor; 28 | + (UIColor *)cyanColor; 29 | + (UIColor *)yellowColor; 30 | + (UIColor *)magentaColor; 31 | + (UIColor *)orangeColor; 32 | + (UIColor *)purpleColor; 33 | + (UIColor *)brownColor; 34 | + (UIColor *)clearColor; 35 | 36 | - (UIColor *)colorWithAlphaComponent:(CGFloat)alpha; 37 | 38 | @property (nonatomic, readonly) CGColorRef CGColor; 39 | 40 | @end 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Extensions/CAAnimationGroup+LOTAnimatableGroup.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAAnimationGroup+LOTAnimatableGroup.m 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/19/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "CAAnimationGroup+LOTAnimatableGroup.h" 10 | 11 | @implementation CAAnimationGroup (LOTAnimatableGroup) 12 | 13 | + (nullable CAAnimationGroup *)LOT_animationGroupForAnimatablePropertiesWithKeyPaths:(nonnull NSDictionary> *)properties { 14 | NSMutableArray *animations = [NSMutableArray array]; 15 | NSTimeInterval animduration = 0; 16 | for (NSString *keyPath in properties.allKeys) { 17 | id property = properties[keyPath]; 18 | if ([property hasAnimation]) { 19 | CAKeyframeAnimation *animation = [property animationForKeyPath:keyPath]; 20 | [animations addObject:animation]; 21 | 22 | if (animation.duration + animation.beginTime > animduration) { 23 | animduration = animation.duration + animation.beginTime; 24 | } 25 | } 26 | } 27 | 28 | if (animations.count) { 29 | CAAnimationGroup *animation = [CAAnimationGroup new]; 30 | animation.animations = animations; 31 | animation.duration = animduration; 32 | animation.fillMode = kCAFillModeForwards; 33 | animation.removedOnCompletion = NO; 34 | return animation; 35 | } 36 | return nil; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/lottie-ios.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lottie-ios", 3 | "version": "1.0.0", 4 | "summary": "Used to natively render vector animations exported from After Effects.", 5 | "description": "Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovin and renders the vector animations natively on mobile and through React Native!\n\nFor the first time, designers can create and ship beautiful animations without an enginineer painstakingly recreating it be hand. Since the animation is backed by JSON they are extremely small in size but can be large in complexity! Animations can be played, resized, looped, sped up, slowed down, and even interactively scrubbed.", 6 | "homepage": "https://github.com/airbnb/lottie-ios", 7 | "license": { 8 | "type": "Apache", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Brandon Withrow": "buba447@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/airbnb/lottie-ios.git", 16 | "tag": "1.0.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0", 20 | "osx": "10.10" 21 | }, 22 | "source_files": "lottie-ios/Classes/**/*", 23 | "public_header_files": "lottie-ios/Classes/PublicHeaders/*.h", 24 | "ios": { 25 | "frameworks": "UIKit" 26 | }, 27 | "osx": { 28 | "frameworks": [ 29 | "AppKit", 30 | "CoreVideo" 31 | ] 32 | }, 33 | "module_name": "Lottie", 34 | "header_dir": "Lottie" 35 | } 36 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-ScreenshotTests/LottieAnimationTestCase.m: -------------------------------------------------------------------------------- 1 | // 2 | // LottieAnimationTestCase.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/22/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LottieAnimationTestCase.h" 10 | @interface LottieAnimationTestCase () 11 | 12 | @property (nonatomic, strong) UIWindow *window; 13 | @property (nonatomic, strong) LOTAnimationView *animationView; 14 | 15 | 16 | @end 17 | 18 | @implementation LottieAnimationTestCase 19 | 20 | - (void)setUp { 21 | [super setUp]; 22 | // self.recordMode = YES; 23 | self.usesDrawViewHierarchyInRect = YES; 24 | self.animationView = [LOTAnimationView animationNamed:self.animationName]; 25 | self.window = [[UIWindow alloc] initWithFrame:self.animationView.bounds]; 26 | self.window.rootViewController = [[UIViewController alloc] init]; 27 | [self.window.rootViewController.view addSubview:self.animationView]; 28 | [self.window makeKeyAndVisible]; 29 | } 30 | 31 | - (void)testAnimationProgress:(float)progress { 32 | XCTestExpectation *expectation = [self expectationWithDescription:@"Image"]; 33 | [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 34 | [expectation fulfill]; 35 | }]; 36 | 37 | self.animationView.animationProgress = progress; 38 | [self waitForExpectationsWithTimeout:1 handler:^(NSError * _Nullable error) { 39 | FBSnapshotVerifyView(self.animationView.layer, nil); 40 | }]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/Local Podspecs/lottie-ios.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lottie-ios", 3 | "version": "1.0.4", 4 | "summary": "Used to natively render vector animations exported from After Effects.", 5 | "description": "Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovin and renders the vector animations natively on mobile and through React Native!\n\nFor the first time, designers can create and ship beautiful animations without an enginineer painstakingly recreating it be hand. Since the animation is backed by JSON they are extremely small in size but can be large in complexity! Animations can be played, resized, looped, sped up, slowed down, and even interactively scrubbed.", 6 | "homepage": "https://github.com/airbnb/lottie-ios", 7 | "license": { 8 | "type": "Apache", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Brandon Withrow": "buba447@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/airbnb/lottie-ios.git", 16 | "tag": "1.0.4" 17 | }, 18 | "platforms": { 19 | "ios": "8.0", 20 | "osx": "10.10" 21 | }, 22 | "source_files": "lottie-ios/Classes/**/*", 23 | "public_header_files": "lottie-ios/Classes/PublicHeaders/*.h", 24 | "ios": { 25 | "frameworks": "UIKit" 26 | }, 27 | "osx": { 28 | "frameworks": [ 29 | "AppKit", 30 | "CoreVideo" 31 | ] 32 | }, 33 | "module_name": "Lottie", 34 | "header_dir": "Lottie" 35 | } 36 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Private/LOTAnimationView_Internal.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationView_Internal.h 3 | // Lottie 4 | // 5 | // Created by Brandon Withrow on 12/7/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimationView.h" 10 | 11 | typedef enum : NSUInteger { 12 | LOTConstraintTypeAlignToBounds, 13 | LOTConstraintTypeAlignToLayer, 14 | LOTConstraintTypeNone 15 | } LOTConstraintType; 16 | 17 | @interface LOTAnimationState : NSObject 18 | 19 | - (_Nonnull instancetype)initWithDuration:(CGFloat)duration layer:( CALayer * _Nullable)layer; 20 | 21 | - (void)setAnimationIsPlaying:(BOOL)animationIsPlaying; 22 | - (void)setAnimationDoesLoop:(BOOL)loopAnimation; 23 | - (void)setAnimatedProgress:(CGFloat)progress; 24 | - (void)setAnimationSpeed:(CGFloat)speed; 25 | 26 | @property (nonatomic, readonly) BOOL loopAnimation; 27 | @property (nonatomic, readonly) BOOL animationIsPlaying; 28 | 29 | // Model Properties 30 | @property (nonatomic, readonly) CGFloat animatedProgress; 31 | @property (nonatomic, readonly) CGFloat animationDuration; 32 | @property (nonatomic, readonly) CGFloat animationSpeed; 33 | 34 | @property (nonatomic, readonly) CALayer * _Nullable layer; 35 | 36 | @end 37 | 38 | @interface LOTAnimationView () 39 | 40 | @property (nonatomic, readonly) LOTComposition * _Nonnull sceneModel; 41 | @property (nonatomic, strong) LOTAnimationState *_Nonnull animationState; 42 | @property (nonatomic, copy, nullable) LOTAnimationCompletionBlock completionBlock; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimatableLayers/LOTMaskLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTMaskLayer.m 3 | // LottieAnimator 4 | // 5 | // Created by brandon_withrow on 7/22/16. 6 | // Copyright © 2016 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTMaskLayer.h" 10 | #import "CAAnimationGroup+LOTAnimatableGroup.h" 11 | 12 | @implementation LOTMaskLayer { 13 | LOTComposition *_composition; 14 | NSArray *_maskLayers; 15 | } 16 | 17 | - (instancetype)initWithMasks:(NSArray *)masks inComposition:(LOTComposition *)comp { 18 | self = [super initWithDuration:comp.timeDuration]; 19 | if (self) { 20 | _masks = masks; 21 | _composition = comp; 22 | [self _setupViewFromModel]; 23 | } 24 | return self; 25 | } 26 | 27 | - (void)_setupViewFromModel { 28 | NSMutableArray *maskLayers = [NSMutableArray array]; 29 | 30 | for (LOTMask *mask in _masks) { 31 | CAShapeLayer *maskLayer = [CAShapeLayer new]; 32 | maskLayer.path = mask.maskPath.initialShape.CGPath; 33 | maskLayer.fillColor = [UIColor whiteColor].CGColor; 34 | maskLayer.opacity = mask.opacity.initialValue.floatValue; 35 | [self addSublayer:maskLayer]; 36 | CAAnimationGroup *animGroup = [CAAnimationGroup LOT_animationGroupForAnimatablePropertiesWithKeyPaths:@{@"opacity" : mask.opacity, 37 | @"path" : mask.maskPath}]; 38 | if (animGroup) { 39 | [maskLayer addAnimation:animGroup forKey:@""]; 40 | } 41 | [maskLayers addObject:maskLayer]; 42 | } 43 | _maskLayers = maskLayers; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /lottie-ios/Classes/AnimationCache/LOTAnimationCache.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationCache.m 3 | // Lottie 4 | // 5 | // Created by Brandon Withrow on 1/9/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTAnimationCache.h" 10 | 11 | const NSInteger kLOTCacheSize = 50; 12 | 13 | @implementation LOTAnimationCache { 14 | NSMutableDictionary *animationsCache_; 15 | NSMutableArray *lruOrderArray_; 16 | } 17 | 18 | + (instancetype)sharedCache { 19 | static LOTAnimationCache *sharedCache = nil; 20 | static dispatch_once_t onceToken; 21 | dispatch_once(&onceToken, ^{ 22 | sharedCache = [[self alloc] init]; 23 | }); 24 | return sharedCache; 25 | } 26 | 27 | - (instancetype)init { 28 | self = [super init]; 29 | if (self) { 30 | animationsCache_ = [[NSMutableDictionary alloc] init]; 31 | lruOrderArray_ = [[NSMutableArray alloc] init]; 32 | } 33 | return self; 34 | } 35 | 36 | - (void)addAnimation:(LOTComposition *)animation forKey:(NSString *)key { 37 | if (lruOrderArray_.count >= kLOTCacheSize) { 38 | NSString *oldKey = lruOrderArray_[0]; 39 | [animationsCache_ removeObjectForKey:oldKey]; 40 | [lruOrderArray_ removeObject:oldKey]; 41 | } 42 | [lruOrderArray_ removeObject:key]; 43 | [lruOrderArray_ addObject:key]; 44 | [animationsCache_ setObject:animation forKey:key]; 45 | } 46 | 47 | - (LOTComposition *)animationForKey:(NSString *)key { 48 | LOTComposition *animation = [animationsCache_ objectForKey:key]; 49 | [lruOrderArray_ removeObject:key]; 50 | [lruOrderArray_ addObject:key]; 51 | return animation; 52 | } 53 | 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/LICENSE: -------------------------------------------------------------------------------- 1 | BSD License 2 | 3 | For the FBSnapshotTestCase software 4 | 5 | Copyright (c) 2013, Facebook, Inc. 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, 12 | this list of conditions and the following disclaimer. 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | * Neither the name Facebook nor the names of its contributors may be used to 17 | endorse or promote products derived from this software without specific 18 | prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Gabriel Handford on 3/1/09. 3 | // Copyright 2009-2013. All rights reserved. 4 | // Created by John Boiles on 10/20/11. 5 | // Copyright (c) 2011. All rights reserved 6 | // Modified by Felix Schulze on 2/11/13. 7 | // Copyright 2013. All rights reserved. 8 | // 9 | // Permission is hereby granted, free of charge, to any person 10 | // obtaining a copy of this software and associated documentation 11 | // files (the "Software"), to deal in the Software without 12 | // restriction, including without limitation the rights to use, 13 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | // copies of the Software, and to permit persons to whom the 15 | // Software is furnished to do so, subject to the following 16 | // conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be 19 | // included in all copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 23 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 24 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 25 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 26 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 28 | // OTHER DEALINGS IN THE SOFTWARE. 29 | // 30 | 31 | #import 32 | 33 | @interface UIImage (Diff) 34 | 35 | - (UIImage *)fb_diffWithImage:(UIImage *)image; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Gabriel Handford on 3/1/09. 3 | // Copyright 2009-2013. All rights reserved. 4 | // Created by John Boiles on 10/20/11. 5 | // Copyright (c) 2011. All rights reserved 6 | // Modified by Felix Schulze on 2/11/13. 7 | // Copyright 2013. All rights reserved. 8 | // 9 | // Permission is hereby granted, free of charge, to any person 10 | // obtaining a copy of this software and associated documentation 11 | // files (the "Software"), to deal in the Software without 12 | // restriction, including without limitation the rights to use, 13 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | // copies of the Software, and to permit persons to whom the 15 | // Software is furnished to do so, subject to the following 16 | // conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be 19 | // included in all copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 23 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 24 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 25 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 26 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 28 | // OTHER DEALINGS IN THE SOFTWARE. 29 | // 30 | 31 | #import 32 | 33 | @interface UIImage (Compare) 34 | 35 | - (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTMask.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTMask.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTMask.h" 10 | #import "LOTAnimatableShapeValue.h" 11 | #import "LOTAnimatableNumberValue.h" 12 | 13 | @implementation LOTMask 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 16 | self = [super init]; 17 | if (self) { 18 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 24 | NSNumber *closed = jsonDictionary[@"cl"]; 25 | _closed = closed.boolValue; 26 | 27 | NSNumber *inverted = jsonDictionary[@"inv"]; 28 | _inverted = inverted.boolValue; 29 | 30 | NSString *mode = jsonDictionary[@"mode"]; 31 | if ([mode isEqualToString:@"a"]) { 32 | _maskMode = LOTMaskModeAdd; 33 | } else if ([mode isEqualToString:@"s"]) { 34 | _maskMode = LOTMaskModeSubtract; 35 | } else if ([mode isEqualToString:@"i"]) { 36 | _maskMode = LOTMaskModeIntersect; 37 | } else { 38 | _maskMode = LOTMaskModeUnknown; 39 | } 40 | 41 | NSDictionary *maskshape = jsonDictionary[@"pt"]; 42 | if (maskshape) { 43 | _maskPath = [[LOTAnimatableShapeValue alloc] initWithShapeValues:maskshape frameRate:frameRate closed:_closed]; 44 | } 45 | 46 | NSDictionary *opacity = jsonDictionary[@"o"]; 47 | if (opacity) { 48 | _opacity = [[LOTAnimatableNumberValue alloc] initWithNumberValues:opacity frameRate:frameRate]; 49 | [_opacity remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; 50 | } 51 | } 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /lottie-ios/Classes/PublicHeaders/LOTAnimationTransitionController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LOTAnimationTransitionController.h 3 | // Lottie 4 | // 5 | // Created by Brandon Withrow on 1/18/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR 10 | 11 | #import 12 | #import 13 | 14 | /** LOTAnimationTransitionController 15 | * 16 | * This class creates a custom UIViewController transisiton animation 17 | * using a Lottie animation to transition between two view controllers 18 | * The transition can use custom defined layers in After Effects for to/from 19 | * 20 | * When referencing After Effects layers the animator masks the to/from viewController 21 | * with the referenced layer. 22 | * 23 | */ 24 | 25 | @interface LOTAnimationTransitionController : NSObject 26 | 27 | /** 28 | The initializer to create a new transition animation. 29 | 30 | @param animation The name of the Lottie Animation to load for the transition 31 | 32 | @param fromLayer The name of the custom layer to mask the fromVC screenshot with. 33 | If no layer is specified then the screenshot is added behind the Lottie Animation 34 | 35 | @param toLayer The name of the custom layer to mask the toVC screenshot with. 36 | If no layer is specified then the screenshot is added behind the Lottie Animation 37 | and a fade transition is performed along with the Lottie animation. 38 | 39 | */ 40 | - (instancetype)initWithAnimationNamed:(NSString *)animation 41 | fromLayerNamed:(NSString *)fromLayer 42 | toLayerNamed:(NSString *)toLayer; 43 | 44 | @end 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | /** 18 | Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. 19 | This method is a convenience for creating the suffixes set based on the architecture 20 | that the test is running. 21 | 22 | @returns @c YES if the test is running in 64bit, otherwise @c NO. 23 | */ 24 | BOOL FBSnapshotTestCaseIs64Bit(void); 25 | 26 | /** 27 | Returns a default set of strings that is used to append a suffix based on the architectures. 28 | @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() 29 | 30 | @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. 31 | */ 32 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); 33 | 34 | /** 35 | Returns a fully «normalized» file name. 36 | Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name. 37 | 38 | @returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end. 39 | */ 40 | NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | -------------------------------------------------------------------------------- /Example/lottie-ios/lottie-ios-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Lottie-Example 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTComposition.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTScene.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/14/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTComposition.h" 10 | #import "LOTLayer.h" 11 | 12 | @implementation LOTComposition { 13 | NSDictionary *_modelMap; 14 | } 15 | 16 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary { 17 | self = [super init]; 18 | if (self) { 19 | [self _mapFromJSON:jsonDictionary]; 20 | } 21 | return self; 22 | } 23 | 24 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary { 25 | NSNumber *width = jsonDictionary[@"w"]; 26 | NSNumber *height = jsonDictionary[@"h"]; 27 | if (width && height) { 28 | CGRect bounds = CGRectMake(0, 0, width.floatValue, height.floatValue); 29 | _compBounds = bounds; 30 | } 31 | 32 | _startFrame = [jsonDictionary[@"ip"] copy]; 33 | _endFrame = [jsonDictionary[@"op"] copy]; 34 | _framerate = [jsonDictionary[@"fr"] copy]; 35 | 36 | if (_startFrame && _endFrame && _framerate) { 37 | NSInteger frameDuration = _endFrame.integerValue - _startFrame.integerValue; 38 | NSTimeInterval timeDuration = frameDuration / _framerate.floatValue; 39 | _timeDuration = timeDuration; 40 | } 41 | 42 | NSArray *layersJSON = jsonDictionary[@"layers"]; 43 | NSMutableArray *layers = [NSMutableArray array]; 44 | NSMutableDictionary *modelMap = [NSMutableDictionary dictionary]; 45 | 46 | for (NSDictionary *layerJSON in layersJSON) { 47 | LOTLayer *layer = [[LOTLayer alloc] initWithJSON:layerJSON fromComposition:self]; 48 | [layers addObject:layer]; 49 | modelMap[layer.layerID] = layer; 50 | } 51 | 52 | _modelMap = modelMap; 53 | _layers = layers; 54 | } 55 | 56 | - (LOTLayer *)layerModelForID:(NSNumber *)layerID { 57 | return _modelMap[layerID]; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /lottie-ios.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint lottie-ios.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'lottie-ios' 11 | s.version = '1.0.4' 12 | s.summary = 'Used to natively render vector animations exported from After Effects.' 13 | 14 | s.description = <<-DESC 15 | Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovin and renders the vector animations natively on mobile and through React Native! 16 | 17 | For the first time, designers can create and ship beautiful animations without an enginineer painstakingly recreating it be hand. Since the animation is backed by JSON they are extremely small in size but can be large in complexity! Animations can be played, resized, looped, sped up, slowed down, and even interactively scrubbed. 18 | DESC 19 | 20 | s.homepage = 'https://github.com/airbnb/lottie-ios' 21 | s.license = { :type => 'Apache', :file => 'LICENSE' } 22 | s.author = { 'Brandon Withrow' => 'buba447@gmail.com' } 23 | s.source = { :git => 'https://github.com/airbnb/lottie-ios.git', :tag => s.version.to_s } 24 | 25 | s.ios.deployment_target = '8.0' 26 | s.osx.deployment_target = '10.10' 27 | 28 | s.source_files = 'lottie-ios/Classes/**/*' 29 | 30 | # s.resource_bundles = { 31 | # 'lottie-ios' => ['lottie-ios/Assets/*.png'] 32 | # } 33 | 34 | s.public_header_files = 'lottie-ios/Classes/PublicHeaders/*.h' 35 | s.ios.frameworks = 'UIKit' 36 | s.osx.frameworks = ['AppKit', 'CoreVideo'] 37 | s.module_name = 'Lottie' 38 | s.header_dir = 'Lottie' 39 | end 40 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | #import 13 | #import 14 | 15 | BOOL FBSnapshotTestCaseIs64Bit(void) 16 | { 17 | #if __LP64__ 18 | return YES; 19 | #else 20 | return NO; 21 | #endif 22 | } 23 | 24 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) 25 | { 26 | NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; 27 | [suffixesSet addObject:@"_32"]; 28 | [suffixesSet addObject:@"_64"]; 29 | if (FBSnapshotTestCaseIs64Bit()) { 30 | return [suffixesSet reversedOrderedSet]; 31 | } 32 | return [suffixesSet copy]; 33 | } 34 | 35 | NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName) 36 | { 37 | UIDevice *device = [UIDevice currentDevice]; 38 | UIWindow *keyWindow = [[UIApplication sharedApplication] fb_strictKeyWindow]; 39 | CGSize screenSize = keyWindow.bounds.size; 40 | NSString *os = device.systemVersion; 41 | 42 | fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height]; 43 | 44 | NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; 45 | [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; 46 | [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; 47 | NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; 48 | fileName = [validComponents componentsJoinedByString:@"_"]; 49 | 50 | return fileName; 51 | } -------------------------------------------------------------------------------- /lottie-ios/Classes/MacCompatability/CADisplayLink.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Oleksii Pavlovskyi on 2/2/17. 3 | // Copyright (c) 2017 Airbnb. All rights reserved. 4 | // 5 | 6 | #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 7 | #import "CADisplayLink.h" 8 | #import 9 | 10 | @interface CADisplayLink() 11 | 12 | @property (nonatomic, weak) id target; 13 | @property (nonatomic, assign) SEL action; 14 | 15 | - (void)tick; 16 | 17 | @end 18 | 19 | CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, 20 | const CVTimeStamp *_, const CVTimeStamp *__, 21 | CVOptionFlags ___, CVOptionFlags *____, 22 | void *context) { 23 | @autoreleasepool { 24 | CADisplayLink *self = (__bridge CADisplayLink *)context; 25 | [self tick]; 26 | } 27 | return kCVReturnSuccess; 28 | } 29 | 30 | @implementation CADisplayLink { 31 | CVDisplayLinkRef _displayLink; 32 | } 33 | 34 | + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel { 35 | CADisplayLink *displayLink = [self new]; 36 | displayLink.target = target; 37 | displayLink.action = sel; 38 | return displayLink; 39 | } 40 | 41 | - (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode { 42 | CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink); 43 | CVDisplayLinkSetOutputCallback(_displayLink, displayLinkCallback, (__bridge void *)self); 44 | CVDisplayLinkStart(_displayLink); 45 | } 46 | 47 | - (void)invalidate { 48 | if (_displayLink) 49 | CVDisplayLinkStop(_displayLink); 50 | } 51 | 52 | - (void)dealloc { 53 | if (_displayLink) 54 | CVDisplayLinkRelease(_displayLink); 55 | } 56 | 57 | #pragma clang diagnostic push 58 | #pragma clang diagnostic ignored "-Warc-performSelector-leaks" 59 | - (void)tick { 60 | if (self.action && [self.target respondsToSelector:self.action]) 61 | [self.target performSelector:self.action]; 62 | } 63 | #pragma clang diagnostic pop 64 | 65 | @end 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /Example/lottie-ios/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/TrimPathFill.json: -------------------------------------------------------------------------------- 1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[147.008,97.246]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.06,1,1]},"o":{"k":100},"w":{"k":11},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-54.496,-56.377],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[100.922,-82.055],[100.922,82.055],[-100.922,82.055],[-100.922,-82.055]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.09,1,1]},"o":{"k":100},"w":{"k":21},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[70.992,93.828],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":1800,"fr":60,"w":400,"h":400} -------------------------------------------------------------------------------- /lottie-ios/Classes/Models/LOTShapeStroke.m: -------------------------------------------------------------------------------- 1 | // 2 | // LOTShapeStroke.m 3 | // LottieAnimator 4 | // 5 | // Created by Brandon Withrow on 12/15/15. 6 | // Copyright © 2015 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LOTShapeStroke.h" 10 | #import "LOTAnimatableNumberValue.h" 11 | #import "LOTAnimatableColorValue.h" 12 | 13 | @implementation LOTShapeStroke 14 | 15 | - (instancetype)initWithJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 16 | self = [super init]; 17 | if (self) { 18 | [self _mapFromJSON:jsonDictionary frameRate:frameRate]; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)_mapFromJSON:(NSDictionary *)jsonDictionary frameRate:(NSNumber *)frameRate { 24 | NSDictionary *color = jsonDictionary[@"c"]; 25 | if (color) { 26 | _color = [[LOTAnimatableColorValue alloc] initWithColorValues:color frameRate:frameRate]; 27 | } 28 | 29 | NSDictionary *width = jsonDictionary[@"w"]; 30 | if (width) { 31 | _width = [[LOTAnimatableNumberValue alloc] initWithNumberValues:width frameRate:frameRate]; 32 | } 33 | 34 | NSDictionary *opacity = jsonDictionary[@"o"]; 35 | if (opacity) { 36 | _opacity = [[LOTAnimatableNumberValue alloc] initWithNumberValues:opacity frameRate:frameRate]; 37 | [_opacity remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; 38 | } 39 | 40 | _capType = [jsonDictionary[@"lc"] integerValue] - 1; 41 | _joinType = [jsonDictionary[@"lj"] integerValue] - 1; 42 | 43 | NSNumber *fillEnabled = jsonDictionary[@"fillEnabled"]; 44 | _fillEnabled = fillEnabled.boolValue; 45 | 46 | NSArray *dashes = jsonDictionary[@"d"]; 47 | if (dashes) { 48 | NSMutableArray *dashPattern = [NSMutableArray array]; 49 | for (NSDictionary *dash in dashes) { 50 | if ([dash[@"n"] isEqualToString:@"o"]) { 51 | continue; 52 | } 53 | NSDictionary *value = dash[@"v"]; 54 | LOTAnimatableNumberValue *numberValue = [[LOTAnimatableNumberValue alloc] initWithNumberValues:value frameRate:frameRate]; 55 | [dashPattern addObject:[numberValue.initialValue copy]]; 56 | } 57 | _lineDashPattern = dashPattern; 58 | } 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Example/lottie-ios/LAAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // LAAppDelegate.m 3 | // lottie-ios 4 | // 5 | // Created by Brandon Withrow on 01/26/2017. 6 | // Copyright (c) 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "LAAppDelegate.h" 10 | 11 | @implementation LAAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | return YES; 17 | } 18 | 19 | - (void)applicationWillResignActive:(UIApplication *)application 20 | { 21 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 22 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 23 | } 24 | 25 | - (void)applicationDidEnterBackground:(UIApplication *)application 26 | { 27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | - (void)applicationWillEnterForeground:(UIApplication *)application 32 | { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | - (void)applicationDidBecomeActive:(UIApplication *)application 37 | { 38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application 42 | { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Lottie-Screenshot/Lottie-Screenshot/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Lottie-Screenshot 4 | // 5 | // Created by Brandon Withrow on 2/21/17. 6 | // Copyright © 2017 Brandon Withrow. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | 24 | - (void)applicationWillResignActive:(UIApplication *)application { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | 30 | - (void)applicationDidEnterBackground:(UIApplication *)application { 31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 33 | } 34 | 35 | 36 | - (void)applicationWillEnterForeground:(UIApplication *)application { 37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | 41 | - (void)applicationDidBecomeActive:(UIApplication *)application { 42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 48 | } 49 | 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /lottie-ios/Classes/Extensions/UIColor+Expanded.h: -------------------------------------------------------------------------------- 1 | #import "LOTPlatformCompat.h" 2 | 3 | // From http://github.com/ars/uicolor-utilities 4 | #define CLAMP(val,min,max) MIN(MAX(val,min),max) 5 | 6 | @interface UIColor (UIColor_Expanded) 7 | @property (nonatomic, readonly) CGColorSpaceModel colorSpaceModel; 8 | @property (nonatomic, readonly) BOOL canProvideRGBComponents; 9 | @property (nonatomic, readonly) CGFloat red; // Only valid if canProvideRGBComponents is YES 10 | @property (nonatomic, readonly) CGFloat green; // Only valid if canProvideRGBComponents is YES 11 | @property (nonatomic, readonly) CGFloat blue; // Only valid if canProvideRGBComponents is YES 12 | @property (nonatomic, readonly) CGFloat white; // Only valid if colorSpaceModel == kCGColorSpaceModelMonochrome 13 | @property (nonatomic, readonly) CGFloat alpha; 14 | @property (nonatomic, readonly) UInt32 rgbHex; 15 | 16 | - (NSString *)LOT_colorSpaceString; 17 | 18 | - (NSArray *)LOT_arrayFromRGBAComponents; 19 | 20 | - (BOOL)LOT_red:(CGFloat *)r green:(CGFloat *)g blue:(CGFloat *)b alpha:(CGFloat *)a; 21 | 22 | - (UIColor *)LOT_colorByLuminanceMapping; 23 | 24 | - (UIColor *)LOT_colorByMultiplyingByRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 25 | - (UIColor *) LOT_colorByAddingRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 26 | - (UIColor *) LOT_colorByLighteningToRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 27 | - (UIColor *) LOT_colorByDarkeningToRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 28 | 29 | - (UIColor *)LOT_colorByMultiplyingBy:(CGFloat)f; 30 | - (UIColor *) LOT_colorByAdding:(CGFloat)f; 31 | - (UIColor *) LOT_colorByLighteningTo:(CGFloat)f; 32 | - (UIColor *) LOT_colorByDarkeningTo:(CGFloat)f; 33 | 34 | - (UIColor *)LOT_colorByMultiplyingByColor:(UIColor *)color; 35 | - (UIColor *) LOT_colorByAddingColor:(UIColor *)color; 36 | - (UIColor *) LOT_colorByLighteningToColor:(UIColor *)color; 37 | - (UIColor *) LOT_colorByDarkeningToColor:(UIColor *)color; 38 | 39 | - (NSString *)LOT_stringFromColor; 40 | - (NSString *)LOT_hexStringValue; 41 | 42 | + (UIColor *)LOT_randomColor; 43 | + (UIColor *)LOT_colorWithString:(NSString *)stringToConvert; 44 | + (UIColor *)LOT_colorWithRGBHex:(UInt32)hex; 45 | + (UIColor *)LOT_colorWithHexString:(NSString *)stringToConvert; 46 | 47 | + (UIColor *)LOT_colorWithName:(NSString *)cssColorName; 48 | 49 | + (UIColor *)LOT_colorByLerpingFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor amount:(CGFloat)amount; 50 | 51 | @end 52 | --------------------------------------------------------------------------------