# 1.0.1基于2.5.7源代码修改
### 1.增加了清理内存缓存的功能,防止内存过大造成的Crash.
### 2.增加了本地磁盘二进制文件的缓存,防止SVGA重复下载造成的流量浪费.
============================================
# 👇🏻👇🏻👇🏻是源库的MD
# SVGAPlayer
[简体中文](./readme.zh.md)
## 2.5.0 Released
This version add Support for matte layer and dynamic matte bitmap.
Head on over to [Dynamic · Matte Layer](https://github.com/yyued/SVGAPlayer-iOS/wiki/Dynamic-%C2%B7-Matte-Layer)
This version add Support for audio step to frame & percentage.
## 2.3.5 Released
This version fixed SVGAPlayer `clearsAfterStop defaults too YES`, Please check your player when it doesn't need to be cleared.
This version fixed SVGAPlayer render issue on iOS 13.1, upgrade to this version ASAP.
## Introduce
SVGAPlayer is a light-weight animation renderer. You use [tools](http://svga.io/designer.html) to export `svga` file from `Adobe Animate CC` or `Adobe After Effects`, and then use SVGAPlayer to render animation on mobile application.
`SVGAPlayer-iOS` render animation natively via iOS CoreAnimation Framework, brings you a high-performance, low-cost animation experience.
If wonder more information, go to this [website](http://svga.io/).
## Usage
Here introduce `SVGAPlayer-iOS` usage. Wonder exporting usage? Click [here](http://svga.io/designer.html).
### Install Via CocoaPods
You want to add pod 'SVGAPlayer', '~> 2.3' similar to the following to your Podfile:
target 'MyApp' do
pod 'SVGAPlayer', '~> 2.3'
end
Then run a `pod install` inside your terminal, or from CocoaPods.app.
### Locate files
SVGAPlayer could load svga file from application bundle or remote server.
### Using code
#### Create a `SVGAPlayer` instance.
```objectivec
SVGAPlayer *player = [[SVGAPlayer alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[self.view addSubview:player]; // Add subview by yourself.
```
#### Create a `SVGAParser` instance, parse from bundle like this.
```objectivec
SVGAParser *parser = [[SVGAParser alloc] init];
[parser parseWithNamed:@"posche" inBundle:nil completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
} failureBlock:nil];
```
#### Create a `SVGAParser` instance, parse from remote server like this.
```objectivec
SVGAParser *parser = [[SVGAParser alloc] init];
[parser parseWithURL:[NSURL URLWithString:@"https://github.com/yyued/SVGA-Samples/blob/master/posche.svga?raw=true"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
} failureBlock:nil];
```
#### Set videoItem to `SVGAPlayer`, play it as you want.
```objectivec
[parser parseWithURL:[NSURL URLWithString:@"https://github.com/yyued/SVGA-Samples/blob/master/posche.svga?raw=true"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
if (videoItem != nil) {
player.videoItem = videoItem;
[player startAnimation];
}
} failureBlock:nil];
```
### Cache
`SVGAParser` use `NSURLSession` request remote data via network. You may use following ways to control cache.
#### Response Header
Server response SVGA files in Body, and response header either. response header has cache-control / etag / expired keys, all these keys telling NSURLSession how to handle cache.
#### Request NSData By Yourself
If you couldn't fix Server Response Header, You should build NSURLRequest with CachePolicy by yourself, and fetch NSData.
Deliver NSData to SVGAParser, as usual.
## Features
Here are many feature samples.
* [Replace an element with Bitmap.](https://github.com/yyued/SVGAPlayer-iOS/wiki/Dynamic-Image)
* [Add text above an element.](https://github.com/yyued/SVGAPlayer-iOS/wiki/Dynamic-Text)
* [Hides an element dynamicaly.](https://github.com/yyued/SVGAPlayer-iOS/wiki/Dynamic-Hidden)
* [Use a custom drawer for element.](https://github.com/yyued/SVGAPlayer-iOS/wiki/Dynamic-Drawer)
## APIs
Head on over to [https://github.com/yyued/SVGAPlayer-iOS/wiki/APIs](https://github.com/yyued/SVGAPlayer-iOS/wiki/APIs)
## CHANGELOG
Head on over to [CHANGELOG](./CHANGELOG.md)