MDFSpritedAnimationView 3.0.0

MDFSpritedAnimationView 3.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 Apache 2
发布最新版本2016年12月

Randall LiRobert MooreJeff Verkoeyen维护。



  • Chris Cox

SpritedAnimationView

此控件提供了一种使用 UIImageView 动画一系列图像的替代方案。只使用单个由单个精灵帧组成的图像,动画简单地说就是更新层的 contentsRect

要求

  • Xcode 7.0 或更高版本
  • iOS SDK 版本 7.0 或更高版本

创建精灵图资源

精灵图由单个图像组成,该图像由单个精灵帧组成的一列。单个精灵帧必须在整个图像边界内大小均匀且间距一致。一个典型的用例是生成三张精灵图图像(1x、2x 和 3x),并将这些图像添加到 .xcassets 文件中,以便通过 spritedAnimationView 在应用程序中使用。

动画精灵图

一旦将精灵图添加到 spritedAnimationView 中(在 init 中或之后添加),spritedAnimationView 就可以动画从第一个精灵帧到最后一个精灵帧的图像。有一些属性可以设置帧率,默认为 60 fps(每秒帧数)。可以通过 animationRepeatCount 属性实现单次或循环动画。要开始动画,请使用 -startAnimationWithCompletion: 方法。动画完成后会调用完成块。然而,如果将 animationRepeatCount 设置为无限循环(使用 0 设置),则不会调用此块。还提供了其他方法,可以将 spritedAnimationView 重置到开始或结束,而不进行动画。

实现双状态动画

只要提供一个精灵图,动画图像,并在完成时简单地重置到开始就足够了。然而,在某些情况下,通过提供两个不同的精灵图可以获得更好的用户体验。一个显示从状态 A 到状态 B 的动画,然后另一个精灵图显示状态 B 返回到状态 A。这样,动画完成后,可以在每个状态下交换精灵图,并用另一个精灵图像替换。

两个示例精灵图(显示列表和网格图标状态)

精灵图集列表 网格精灵图集
List Icon Grid Icon

两态示例

// 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 之前,您需要导入它

Objective-C

#import "MaterialSpritedAnimationView.h"

Swift

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.");
}];