IOS使用SVGA实现动画效果
参考资料
SVGA官网 : http://svga.io
SVGA简介 : https://github.com/yyued/SVGA-Format
SVGA示例动画: https://github.com/yyued/SVGA-Samples
安装(cooped)
pod 'SVGAPlayer'
pod install
引用(头文件)
import <SVGA.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *coverView;
@property (nonatomic, strong) SVGAPlayer *player;
@end
@implementationViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.player = [[SVGAPlayer alloc] initWithFrame:CGRectMake(0, 0 ,self.coverView.frame.size.width, self.coverView.frame.size.height)];
[self.coverView addSubview:self.player];
self.player.delegate=self;
[selfLoadBtn:self];
//动画循环次数 默认是0(无限次)
self.player.loops=0;
//动画停止后清除画布。 默认是true
self.player.clearsAfterStop = true;
//默认为Forward。可能是Forward,Backward。Forward 表示动画将在完成后在最后一帧暂停。Backward 表示动画将在完成后在第一帧暂停。
self.player.fillMode=@"Forward";
//设置第一帧结束的时候触发
// [self svgaPlayerDidAnimatedToFrame:1];
//当图片百分比出现的时候触发
// [self svgaPlayerDidAnimatedToPercentage:1.0];
}
/**
这些方法暂时不清楚怎么使用
//在特定范围内播放动画。如果reverse设置为true,则动画将从end开始反向开始。
- (void)startAnimationWithRange:(NSRange)range reverse:(BOOL)reverse;
//渲染特定帧,如果andPlay设置为,则从此帧播放true
- (void)stepToFrame:(NSInteger)frame andPlay:(BOOL)andPlay;
//渲染特定百分比架,percentage价值应0.0到1.0,从这个框架,如果玩andPlay套到true
- (void)stepToPercentage:(CGFloat)percentage andPlay:(BOOL)andPlay;
*/
//本地资源
- (IBAction)LoadBtn:(id)sender {
//先停止动画
[self.player stopAnimation];
//Angel 是本地格式为svga 的文件
SVGAParser*parser = [[SVGAParseralloc]init];
[parserparseWithNamed:@"Angel" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
if(videoItem !=nil) {
self.player.videoItem= videoItem;
[self.playerstartAnimation];
}
}failureBlock:^(NSError*_Nonnullerror) {
}];
}
//网络资源
- (IBAction)NetBtn:(id)sender {
//先停止动画
[self.player stopAnimation];
SVGAParser*parser = [[SVGAParseralloc]init];
[parserparseWithURL:[NSURL URLWithString:@"https://github.com/yyued/SVGA-Samples/blob/master/posche.svga?raw=true"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
if(videoItem !=nil) {
self.player.videoItem= videoItem;
[self.playerstartAnimation];
}
}failureBlock:^(NSError*_Nonnullerror) {
NSLog(@"error = %@",error);
}];
}
//暂停动画
- (IBAction)StopBtn:(id)sender {
[self.player pauseAnimation];
}
//下载资源
-