测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | Apache 2 |
发布最新版本 | 2016年12月 |
由Randall Li、Robert Moore和Jeff Verkoeyen维护。
此控件提供了一种使用 UIImageView
动画一系列图像的替代方案。只使用单个由单个精灵帧组成的图像,动画简单地说就是更新层的 contentsRect
。
精灵图由单个图像组成,该图像由单个精灵帧组成的一列。单个精灵帧必须在整个图像边界内大小均匀且间距一致。一个典型的用例是生成三张精灵图图像(1x、2x 和 3x),并将这些图像添加到 .xcassets
文件中,以便通过 spritedAnimationView
在应用程序中使用。
一旦将精灵图添加到 spritedAnimationView
中(在 init
中或之后添加),spritedAnimationView
就可以动画从第一个精灵帧到最后一个精灵帧的图像。有一些属性可以设置帧率,默认为 60 fps(每秒帧数)。可以通过 animationRepeatCount
属性实现单次或循环动画。要开始动画,请使用 -startAnimationWithCompletion:
方法。动画完成后会调用完成块。然而,如果将 animationRepeatCount
设置为无限循环(使用 0 设置),则不会调用此块。还提供了其他方法,可以将 spritedAnimationView
重置到开始或结束,而不进行动画。
只要提供一个精灵图,动画图像,并在完成时简单地重置到开始就足够了。然而,在某些情况下,通过提供两个不同的精灵图可以获得更好的用户体验。一个显示从状态 A 到状态 B 的动画,然后另一个精灵图显示状态 B 返回到状态 A。这样,动画完成后,可以在每个状态下交换精灵图,并用另一个精灵图像替换。
精灵图集列表 | 网格精灵图集 |
---|---|
// Animate the sprited view.
[_animationView startAnimatingWithCompletion:^(BOOL finished) {
// When animation completes, toggle image.
_toggle = !_toggle;
UIImage *spriteImage =
[UIImage imageNamed:_toggle ? kSpriteGridImage : kSpriteListImage];
_animationView.spriteSheetImage = spriteImage;
}];
在使用 Sprited Animation View 之前,您需要导入它
#import "MaterialSpritedAnimationView.h"
import MaterialComponents
集成 spritedAnimationView
与在视图中添加 UIImageView
类似。
#import "MaterialSpritedAnimationView.h"
// Create a Sprited Animation View.
UIImage *spriteSheet = [UIImage imageNamed:@"myImage"];
MDFSpritedAnimationView *animationView =
[[MDFSpritedAnimationView alloc] initWithSpriteSheetImage:spriteSheet];
animationView.tintColor = [UIColor blueColor];
[self.view addSubview:animationView];
// To Animate.
[animationView startAnimatingWithCompletion:^(BOOL finished) {
NSLog(@"Done animating.");
}];