mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-20 19:19:52 +00:00
Initial work on interactive props
This commit is contained in:
1968
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
1968
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,9 @@
|
||||
#import "LOTAnimationView.h"
|
||||
#import "LOTAnimationView_Compat.h"
|
||||
#import "LOTComposition.h"
|
||||
#import "LOTKeypath.h"
|
||||
#import "Lottie.h"
|
||||
#import "LOTValueCallback.h"
|
||||
|
||||
FOUNDATION_EXPORT double LottieVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char LottieVersionString[];
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
#import "LOTAnimationView_Compat.h"
|
||||
#import "LOTCacheProvider.h"
|
||||
#import "LOTComposition.h"
|
||||
#import "LOTKeypath.h"
|
||||
#import "Lottie.h"
|
||||
#import "LOTValueCallback.h"
|
||||
|
||||
FOUNDATION_EXPORT double LottieVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char LottieVersionString[];
|
||||
|
||||
1
Example/Tests/GeometryTransformTest.json
Normal file
1
Example/Tests/GeometryTransformTest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"v":"4.12.0","fr":23.9759979248047,"ip":0,"op":48.9999957589018,"w":300,"h":300,"nm":"Comp 2","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Scaled","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[68.52,68.52],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[200,200],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48.9999957589018,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"TopLeft","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[68.52,68.52],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-150,-150],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48.9999957589018,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"BottomRight","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[68.52,68.52],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150,150],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48.9999957589018,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Center","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[68.52,68.52],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48.9999957589018,"st":0,"bm":0}]}
|
||||
62
Example/Tests/LAGeometryTest.m
Normal file
62
Example/Tests/LAGeometryTest.m
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// LAGeometryTest.m
|
||||
// lottie-ios_Tests
|
||||
//
|
||||
// Created by brandon_withrow on 12/18/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
|
||||
@interface LAGeometryTest : XCTestCase
|
||||
|
||||
@property (nonatomic, strong) LOTAnimationView *animationView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation LAGeometryTest
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
self.animationView = [LOTAnimationView animationNamed:@"GeometryTransformTest"];
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testAnimationLoaded {
|
||||
XCTAssertNotNil(self.animationView.sceneModel, @"Animation Composition is nil");
|
||||
}
|
||||
|
||||
- (void)testGeometryCenter {
|
||||
LOTKeypath *keypath = [LOTKeypath keypathWithKeys:@"Center", @"Ellipse 1", nil];
|
||||
CGPoint midPoint = CGPointMake(CGRectGetMidX(self.animationView.bounds), CGRectGetMidY(self.animationView.bounds));
|
||||
CGPoint midPointInChildSpace = [self.animationView convertPoint:midPoint toKeypathLayer:keypath];
|
||||
CGPoint midPointInParentSpace = [self.animationView convertPoint:CGPointZero fromKeypathLayer:keypath];
|
||||
XCTAssertTrue((CGPointEqualToPoint(midPointInChildSpace, CGPointZero)), @"Convert to point incorrect");
|
||||
XCTAssertTrue((CGPointEqualToPoint(midPointInParentSpace, midPoint)), @"Convert from point incorrect");
|
||||
}
|
||||
|
||||
- (void)testGeometryBottomRight {
|
||||
LOTKeypath *keypath = [LOTKeypath keypathWithKeys:@"BottomRight", @"Ellipse 1", nil];
|
||||
CGPoint midPoint = CGPointMake(CGRectGetMidX(self.animationView.bounds), CGRectGetMidY(self.animationView.bounds));
|
||||
CGPoint bottomRightPoint = CGPointMake(CGRectGetMaxX(self.animationView.bounds), CGRectGetMaxY(self.animationView.bounds));
|
||||
CGPoint midPointInChildSpace = [self.animationView convertPoint:midPoint toKeypathLayer:keypath];
|
||||
CGPoint midPointInParentSpace = [self.animationView convertPoint:CGPointZero fromKeypathLayer:keypath];
|
||||
XCTAssertTrue((CGPointEqualToPoint(midPointInChildSpace, CGPointMake(-midPoint.x, -midPoint.y))), @"Convert to point incorrect");
|
||||
XCTAssertTrue((CGPointEqualToPoint(midPointInParentSpace, bottomRightPoint)), @"Convert from point incorrect");
|
||||
}
|
||||
|
||||
- (void)testGeometryScaled {
|
||||
LOTKeypath *keypath = [LOTKeypath keypathWithKeys:@"Scaled", @"Ellipse 1", nil];
|
||||
CGPoint bottomRightPoint = CGPointMake(CGRectGetMaxX(self.animationView.bounds), CGRectGetMaxY(self.animationView.bounds));
|
||||
CGPoint topLeftInChildSpace = [self.animationView convertPoint:CGPointZero toKeypathLayer:keypath];
|
||||
CGPoint bottomRightInParentSpace = [self.animationView convertPoint:CGPointMake(75, 75) fromKeypathLayer:keypath];
|
||||
XCTAssertTrue((CGPointEqualToPoint(bottomRightInParentSpace, bottomRightPoint)), @"Convert to point incorrect");
|
||||
XCTAssertTrue((CGPointEqualToPoint(topLeftInChildSpace, CGPointMake(-75, -75))), @"Convert from point incorrect");
|
||||
}
|
||||
|
||||
@end
|
||||
127
Example/Tests/LAKeypathTest.m
Normal file
127
Example/Tests/LAKeypathTest.m
Normal file
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// LAKeypathTest.m
|
||||
// lottie-ios_Tests
|
||||
//
|
||||
// Created by brandon_withrow on 12/14/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
|
||||
@interface LAKeypathTest : XCTestCase
|
||||
|
||||
@property (nonatomic, strong) LOTAnimationView *animationView;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation LAKeypathTest
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
self.animationView = [LOTAnimationView animationNamed:@"keypathTest"];
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testAnimationLoaded {
|
||||
XCTAssertNotNil(self.animationView.sceneModel, @"Animation Composition is nil");
|
||||
}
|
||||
|
||||
- (void)testExplicitSearch {
|
||||
NSString *searchTerm = @"Shape Layer 1.Shape 1.Path 1";
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithString:searchTerm]];
|
||||
XCTAssertTrue((results.count == 1), @"Wrong number of results");
|
||||
NSString *firstObject = results.firstObject;
|
||||
XCTAssertTrue([searchTerm isEqualToString:firstObject], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testFuzzyKeySearch_Shape1 {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"**", @"Shape 1", nil]];
|
||||
NSArray *expectedResults = @[@"Shape Layer 1.Shape 1",
|
||||
@"WiggleLayer.Shape 1",
|
||||
@"GroupShapeLayer.Group 1.Shape 1",
|
||||
@"TwoShapeLayer.Shape 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 2.Group 1.Shape 1",
|
||||
@"Precomp.GroupShape.Group 1.Shape 1",
|
||||
@"Precomp.SingleShape.Shape 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 1.Group 1.Shape 1"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testFuzzyKeySearch_Shape1_Path1 {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"**", @"Shape 1", @"Path 1", nil]];
|
||||
NSArray *expectedResults = @[@"GroupShapeLayer.Group 1.Shape 1.Path 1",
|
||||
@"Shape Layer 1.Shape 1.Path 1",
|
||||
@"TwoShapeLayer.Shape 1.Path 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 2.Group 1.Shape 1.Path 1",
|
||||
@"Precomp.GroupShape.Group 1.Shape 1.Path 1",
|
||||
@"Precomp.SingleShape.Shape 1.Path 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 1.Group 1.Shape 1.Path 1"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testWildcardKeySearch_Shape1 {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"*", @"Shape 1", nil]];
|
||||
NSArray *expectedResults = @[@"Shape Layer 1.Shape 1",
|
||||
@"WiggleLayer.Shape 1",
|
||||
@"TwoShapeLayer.Shape 1"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testCompoundFuzzyKeySearch_Shape1 {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"**", @"Shape 1", @"*", @"Stroke Width", nil]];
|
||||
NSArray *expectedResults = @[@"Shape Layer 1.Shape 1.Stroke 1.Stroke Width",
|
||||
@"WiggleLayer.Shape 1.Stroke 1.Stroke Width",
|
||||
@"GroupShapeLayer.Group 1.Shape 1.Stroke 1.Stroke Width",
|
||||
@"TwoShapeLayer.Shape 1.Stroke 1.Stroke Width"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testDoubleFuzzyKeySearch_Shape1 {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"**", @"Group 1", @"**", @"Path 1", nil]];
|
||||
NSArray *expectedResults = @[@"Precomp.DoubleGroupShape.TopGroup.Group 2.Group 1.Shape 1.Path 1",
|
||||
@"Precomp.GroupShape.Group 1.Shape 2.Path 1",
|
||||
@"Precomp.GroupShape.Group 1.Shape 1.Path 1",
|
||||
@"GroupShapeLayer.Group 1.Shape 2.Path 1",
|
||||
@"GroupShapeLayer.Group 1.Shape 1.Path 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 1.Group 1.Shape 2.Path 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 1.Group 1.Shape 1.Path 1",
|
||||
@"Precomp.DoubleGroupShape.TopGroup.Group 2.Group 1.Shape 2.Path 1"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testKeySearch_Precomp {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"Precomp", nil]];
|
||||
NSArray *expectedResults = @[@"Precomp"];
|
||||
|
||||
NSSet *set1 = [NSSet setWithArray:results];
|
||||
NSSet *set2 = [NSSet setWithArray:expectedResults];
|
||||
XCTAssertTrue([set1 isEqualToSet:set2], @"Wrong keypath found");
|
||||
}
|
||||
|
||||
- (void)testFuzzyKeySearch_Precomp {
|
||||
NSArray *results = [self.animationView keysForKeyPath:[LOTKeypath keypathWithKeys:@"Precomp", @"**", nil]];
|
||||
XCTAssertTrue((results.count == 33), @"Wrong number of results");
|
||||
}
|
||||
|
||||
@end
|
||||
1
Example/Tests/keypathTest.json
Normal file
1
Example/Tests/keypathTest.json
Normal file
File diff suppressed because one or more lines are too long
1
Example/Tests/setValueTest.json
Normal file
1
Example/Tests/setValueTest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"v":"4.12.0","fr":23.9759979248047,"ip":0,"op":48.9999957589018,"w":300,"h":300,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-51],[0,79]],"o":[[0,51],[0,-79]],"v":[[-52.182,-74.182],[32.818,-38.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[58.182,-52.818],"e":[58.182,102.182],"to":[0,25.8333339691162],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":29,"s":[58.182,102.182],"e":[58.182,-52.818],"to":[0,0],"ti":[0,25.8333339691162]},{"t":47.9999958454548}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[69.723,69.723],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.431255026425,0,0.902665022308,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[-82.139,-74.139],"e":[-82.139,115.861],"to":[0,0],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":28,"s":[-82.139,115.861],"e":[-82.139,-74.139],"to":[0,0],"ti":[0,0]},{"t":47.9999958454548}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":0,"s":[45],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":28,"s":[0],"e":[-45]},{"t":47.9999958454548}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48.9999957589018,"st":0,"bm":0}]}
|
||||
@@ -64,9 +64,16 @@
|
||||
622F77091F2BE63100269858 /* X.json in Resources */ = {isa = PBXBuildFile; fileRef = 622F76EB1F2BE63100269858 /* X.json */; };
|
||||
622F770A1F2BE63100269858 /* Y.json in Resources */ = {isa = PBXBuildFile; fileRef = 622F76EC1F2BE63100269858 /* Y.json */; };
|
||||
622F770B1F2BE63100269858 /* Z.json in Resources */ = {isa = PBXBuildFile; fileRef = 622F76ED1F2BE63100269858 /* Z.json */; };
|
||||
6289F3851FE4A3F500C10B3E /* setValueTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 6289F3841FE4A3F500C10B3E /* setValueTest.json */; };
|
||||
6289F3871FE877FC00C10B3E /* GeometryTransformTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 6289F3861FE877FC00C10B3E /* GeometryTransformTest.json */; };
|
||||
6289F3881FE877FC00C10B3E /* GeometryTransformTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 6289F3861FE877FC00C10B3E /* GeometryTransformTest.json */; };
|
||||
6289F38A1FE8784200C10B3E /* LAGeometryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6289F3891FE8784200C10B3E /* LAGeometryTest.m */; };
|
||||
629EC57F1F54BFF1005B2C59 /* LAControlsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 629EC57E1F54BFF1005B2C59 /* LAControlsViewController.m */; };
|
||||
629EC5811F54C00B005B2C59 /* Switch.json in Resources */ = {isa = PBXBuildFile; fileRef = 629EC5801F54C00B005B2C59 /* Switch.json */; };
|
||||
629EC5891F54C925005B2C59 /* Switch_States.json in Resources */ = {isa = PBXBuildFile; fileRef = 629EC5881F54C925005B2C59 /* Switch_States.json */; };
|
||||
62A62AE81FE2FF2B001A2C2F /* keypathTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 62A62AE71FE2FF2A001A2C2F /* keypathTest.json */; };
|
||||
62A62AE91FE2FF2B001A2C2F /* keypathTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 62A62AE71FE2FF2A001A2C2F /* keypathTest.json */; };
|
||||
62A62AEB1FE2FFB0001A2C2F /* LAKeypathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A62AEA1FE2FFB0001A2C2F /* LAKeypathTest.m */; };
|
||||
62B2546A1E3A8D310035A842 /* LottieRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B254631E3A8D310035A842 /* LottieRootViewController.m */; };
|
||||
62B2546B1E3A8D310035A842 /* AnimationExplorerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B254651E3A8D310035A842 /* AnimationExplorerViewController.m */; };
|
||||
62B2546C1E3A8D310035A842 /* AnimationTransitionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B254671E3A8D310035A842 /* AnimationTransitionViewController.m */; };
|
||||
@@ -169,10 +176,15 @@
|
||||
622F76EC1F2BE63100269858 /* Y.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Y.json; sourceTree = "<group>"; };
|
||||
622F76ED1F2BE63100269858 /* Z.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Z.json; sourceTree = "<group>"; };
|
||||
62569CB2461B12ABC97FCB96 /* lottie-ios.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = "lottie-ios.podspec"; path = "../lottie-ios.podspec"; sourceTree = "<group>"; };
|
||||
6289F3841FE4A3F500C10B3E /* setValueTest.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = setValueTest.json; sourceTree = "<group>"; };
|
||||
6289F3861FE877FC00C10B3E /* GeometryTransformTest.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GeometryTransformTest.json; sourceTree = "<group>"; };
|
||||
6289F3891FE8784200C10B3E /* LAGeometryTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LAGeometryTest.m; sourceTree = "<group>"; };
|
||||
629EC57D1F54BFF1005B2C59 /* LAControlsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAControlsViewController.h; sourceTree = "<group>"; };
|
||||
629EC57E1F54BFF1005B2C59 /* LAControlsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LAControlsViewController.m; sourceTree = "<group>"; };
|
||||
629EC5801F54C00B005B2C59 /* Switch.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Switch.json; sourceTree = "<group>"; };
|
||||
629EC5881F54C925005B2C59 /* Switch_States.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Switch_States.json; sourceTree = "<group>"; };
|
||||
62A62AE71FE2FF2A001A2C2F /* keypathTest.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = keypathTest.json; sourceTree = "<group>"; };
|
||||
62A62AEA1FE2FFB0001A2C2F /* LAKeypathTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LAKeypathTest.m; sourceTree = "<group>"; };
|
||||
62B254621E3A8D310035A842 /* LottieRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LottieRootViewController.h; sourceTree = "<group>"; };
|
||||
62B254631E3A8D310035A842 /* LottieRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LottieRootViewController.m; sourceTree = "<group>"; };
|
||||
62B254641E3A8D310035A842 /* AnimationExplorerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationExplorerViewController.h; sourceTree = "<group>"; };
|
||||
@@ -337,6 +349,8 @@
|
||||
6003F5B5195388D20070C39A /* Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6289F3891FE8784200C10B3E /* LAGeometryTest.m */,
|
||||
62A62AEA1FE2FFB0001A2C2F /* LAKeypathTest.m */,
|
||||
6003F5BB195388D20070C39A /* Tests.m */,
|
||||
);
|
||||
path = Tests;
|
||||
@@ -349,9 +363,12 @@
|
||||
622F76CF1F2BE63100269858 /* TypeFace */,
|
||||
622F76B51F2BE58100269858 /* 9squares-AlBoardman.json */,
|
||||
629EC5801F54C00B005B2C59 /* Switch.json */,
|
||||
62A62AE71FE2FF2A001A2C2F /* keypathTest.json */,
|
||||
622F76B61F2BE58100269858 /* HamburgerArrow.json */,
|
||||
6289F3861FE877FC00C10B3E /* GeometryTransformTest.json */,
|
||||
622F76B71F2BE58100269858 /* IconTransitions.json */,
|
||||
622F76B81F2BE58100269858 /* LottieLogo1_masked.json */,
|
||||
6289F3841FE4A3F500C10B3E /* setValueTest.json */,
|
||||
622F76BA1F2BE58100269858 /* LottieLogo2.json */,
|
||||
622F76B91F2BE58100269858 /* LottieLogo1.json */,
|
||||
622F76BB1F2BE58100269858 /* MotionCorpse-Jrcanest.json */,
|
||||
@@ -592,6 +609,7 @@
|
||||
48A852311E3A9E71000AD155 /* lottie_logo.png in Resources */,
|
||||
622F76F11F2BE63100269858 /* BlinkingCursor.json in Resources */,
|
||||
622F76C71F2BE58100269858 /* LottieLogo2.json in Resources */,
|
||||
62A62AE81FE2FF2B001A2C2F /* keypathTest.json in Resources */,
|
||||
622F76C91F2BE58100269858 /* PinJump.json in Resources */,
|
||||
622F76F51F2BE63100269858 /* D.json in Resources */,
|
||||
622F76CD1F2BE58100269858 /* vcTransition2.json in Resources */,
|
||||
@@ -603,6 +621,7 @@
|
||||
622F77031F2BE63100269858 /* R.json in Resources */,
|
||||
71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */,
|
||||
622F76CA1F2BE58100269858 /* TwitterHeart.json in Resources */,
|
||||
6289F3871FE877FC00C10B3E /* GeometryTransformTest.json in Resources */,
|
||||
622F76F91F2BE63100269858 /* H.json in Resources */,
|
||||
622F76C61F2BE58100269858 /* LottieLogo1.json in Resources */,
|
||||
622F77051F2BE63100269858 /* T.json in Resources */,
|
||||
@@ -629,6 +648,7 @@
|
||||
622F76C51F2BE58100269858 /* LottieLogo1_masked.json in Resources */,
|
||||
622F76FC1F2BE63100269858 /* K.json in Resources */,
|
||||
622F76CC1F2BE58100269858 /* vcTransition1.json in Resources */,
|
||||
6289F3851FE4A3F500C10B3E /* setValueTest.json in Resources */,
|
||||
622F76FA1F2BE63100269858 /* I.json in Resources */,
|
||||
622F76F21F2BE63100269858 /* C.json in Resources */,
|
||||
622F76F81F2BE63100269858 /* G.json in Resources */,
|
||||
@@ -642,6 +662,8 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
62A62AE91FE2FF2B001A2C2F /* keypathTest.json in Resources */,
|
||||
6289F3881FE877FC00C10B3E /* GeometryTransformTest.json in Resources */,
|
||||
6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -820,6 +842,8 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6003F5BC195388D20070C39A /* Tests.m in Sources */,
|
||||
6289F38A1FE8784200C10B3E /* LAGeometryTest.m in Sources */,
|
||||
62A62AEB1FE2FFB0001A2C2F /* LAKeypathTest.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1007,7 +1031,7 @@
|
||||
INFOPLIST_FILE = "Tests/Tests-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/lottie-ios_Example.app/lottie-ios_Example";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lottie-Example.app/Lottie-Example";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -1027,7 +1051,7 @@
|
||||
INFOPLIST_FILE = "Tests/Tests-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/lottie-ios_Example.app/lottie-ios_Example";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lottie-Example.app/Lottie-Example";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Release;
|
||||
|
||||
@@ -101,6 +101,11 @@
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
Reference in New Issue
Block a user