mirror of
https://github.com/svga/SVGAPlayer-iOS.git
synced 2025-10-21 07:29:14 +08:00
Add Dynamic Image.
This commit is contained in:
@@ -26,25 +26,50 @@
|
||||
self.aPlayer.loops = 0;
|
||||
self.aPlayer.clearsAfterStop = YES;
|
||||
SVGAParser *parser = [[SVGAParser alloc] init];
|
||||
[parser parseWithURL:[NSURL URLWithString:@"http://uedfe.yypm.com/assets/svga-me/rose.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
|
||||
if (videoItem != nil) {
|
||||
self.aPlayer.videoItem = videoItem;
|
||||
[self.aPlayer startAnimation];
|
||||
|
||||
// [parser parseWithURL:[NSURL URLWithString:@"http://uedfe.yypm.com/assets/svga-me/rose.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
|
||||
// if (videoItem != nil) {
|
||||
// self.aPlayer.videoItem = videoItem;
|
||||
// [self.aPlayer startAnimation];
|
||||
// }
|
||||
// } failureBlock:nil];
|
||||
|
||||
// Dynamic Object Sample
|
||||
[[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@"http://img.hb.aicdn.com/80cc8e001ccdc54febd448dc45119b4bd7924ea5530b-RllWp3_sq320"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
|
||||
if (data != nil) {
|
||||
UIImage *iconImage = [UIImage imageWithData:data];
|
||||
if (iconImage != nil) {
|
||||
[parser parseWithURL:[NSURL URLWithString:@"http://uedfe.yypm.com/assets/svga-me/kingset_dyn.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
|
||||
if (videoItem != nil) {
|
||||
{
|
||||
CALayer *iconLayer = [CALayer layer];
|
||||
iconLayer.cornerRadius = 84.0;
|
||||
iconLayer.masksToBounds = YES;
|
||||
iconLayer.borderWidth = 4.0;
|
||||
iconLayer.borderColor = [UIColor colorWithRed:0xea/255.0 green:0xb3/255.0 blue:0x7d/255.0 alpha:1.0].CGColor;
|
||||
[self.aPlayer setImage:iconImage forKey:@"99" referenceLayer:iconLayer];
|
||||
}
|
||||
self.aPlayer.videoItem = videoItem;
|
||||
[self.aPlayer startAnimation];
|
||||
}
|
||||
} failureBlock:nil];
|
||||
}
|
||||
}
|
||||
} failureBlock:nil];
|
||||
}] resume];
|
||||
|
||||
}
|
||||
|
||||
- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player {
|
||||
NSLog(@"finished.");
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
SVGAParser *parser = [[SVGAParser alloc] init];
|
||||
[parser parseWithURL:[NSURL URLWithString:@"http://uedfe.yypm.com/assets/svga-me/rose.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
|
||||
if (videoItem != nil) {
|
||||
self.aPlayer.videoItem = videoItem;
|
||||
[self.aPlayer startAnimation];
|
||||
}
|
||||
} failureBlock:nil];
|
||||
});
|
||||
// NSLog(@"finished.");
|
||||
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
// SVGAParser *parser = [[SVGAParser alloc] init];
|
||||
// [parser parseWithURL:[NSURL URLWithString:@"http://uedfe.yypm.com/assets/svga-me/rose.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
|
||||
// if (videoItem != nil) {
|
||||
// self.aPlayer.videoItem = videoItem;
|
||||
// [self.aPlayer startAnimation];
|
||||
// }
|
||||
// } failureBlock:nil];
|
||||
// });
|
||||
}
|
||||
|
||||
- (void)viewWillLayoutSubviews {
|
||||
|
@@ -24,9 +24,13 @@
|
||||
@property (nonatomic, assign) int loops;
|
||||
@property (nonatomic, assign) BOOL clearsAfterStop;
|
||||
|
||||
|
||||
- (void)startAnimation;
|
||||
- (void)stopAnimation;
|
||||
- (void)clear;
|
||||
|
||||
#pragma mark - Dynamic Object
|
||||
|
||||
- (void)setImage:(UIImage *)image forKey:(NSString *)aKey referenceLayer:(CALayer *)referenceLayer;
|
||||
- (void)clearDynamicObjects;
|
||||
|
||||
@end
|
||||
|
@@ -16,6 +16,8 @@
|
||||
@property (nonatomic, strong) CALayer *drawLayer;
|
||||
@property (nonatomic, strong) CADisplayLink *displayLink;
|
||||
@property (nonatomic, assign) int currentFrame;
|
||||
@property (nonatomic, copy) NSDictionary *dynamicObjects;
|
||||
@property (nonatomic, copy) NSDictionary *dynamicLayers;
|
||||
|
||||
@end
|
||||
|
||||
@@ -62,8 +64,19 @@
|
||||
[self.videoItem.sprites enumerateObjectsUsingBlock:^(SVGAVideoSpriteEntity * _Nonnull sprite, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
CALayer *spriteLayer = [[CALayer alloc] init];
|
||||
spriteLayer.contentsGravity = kCAGravityResizeAspect;
|
||||
spriteLayer.contents = (__bridge id _Nullable)([self.videoItem.images[sprite.imageKey] CGImage]);
|
||||
[self.drawLayer addSublayer:spriteLayer];
|
||||
if (sprite.imageKey != nil) {
|
||||
if (self.dynamicLayers[sprite.imageKey] != nil) {
|
||||
spriteLayer = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self.dynamicLayers[sprite.imageKey]]];
|
||||
spriteLayer.contentsGravity = kCAGravityResizeAspect;
|
||||
}
|
||||
if (self.dynamicObjects[sprite.imageKey] != nil) {
|
||||
spriteLayer.contents = (__bridge id _Nullable)([self.dynamicObjects[sprite.imageKey] CGImage]);
|
||||
}
|
||||
else {
|
||||
spriteLayer.contents = (__bridge id _Nullable)([self.videoItem.images[sprite.imageKey] CGImage]);
|
||||
}
|
||||
[self.drawLayer addSublayer:spriteLayer];
|
||||
}
|
||||
}];
|
||||
[self.layer addSublayer:self.drawLayer];
|
||||
self.currentFrame = 0;
|
||||
@@ -139,4 +152,39 @@
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Dynamic Object
|
||||
|
||||
- (void)setImage:(UIImage *)image forKey:(NSString *)aKey referenceLayer:(CALayer *)referenceLayer {
|
||||
if (image == nil) {
|
||||
return;
|
||||
}
|
||||
NSMutableDictionary *mutableDynamicObjects = [self.dynamicObjects mutableCopy];
|
||||
[mutableDynamicObjects setObject:image forKey:aKey];
|
||||
self.dynamicObjects = mutableDynamicObjects;
|
||||
if (referenceLayer != nil) {
|
||||
NSMutableDictionary *mutableDynamicLayers = [self.dynamicLayers mutableCopy];
|
||||
[mutableDynamicLayers setObject:referenceLayer forKey:aKey];
|
||||
self.dynamicLayers = mutableDynamicLayers;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)clearDynamicObjects {
|
||||
self.dynamicObjects = nil;
|
||||
self.dynamicLayers = nil;
|
||||
}
|
||||
|
||||
- (NSDictionary *)dynamicObjects {
|
||||
if (_dynamicObjects == nil) {
|
||||
_dynamicObjects = @{};
|
||||
}
|
||||
return _dynamicObjects;
|
||||
}
|
||||
|
||||
- (NSDictionary *)dynamicLayers {
|
||||
if (_dynamicLayers == nil) {
|
||||
_dynamicLayers = @{};
|
||||
}
|
||||
return _dynamicLayers;
|
||||
}
|
||||
|
||||
@end
|
||||
|
Reference in New Issue
Block a user