免费开源的iOS开发学习平台

UIImageView控件:3-帧动画功能

UIImageView可以支持帧动画的播放,即按照顺序播放一组图片,如果播放足够快,会有动画效果,原理同早期的胶片电影播放一致。在若干年前流行的会说话的TOM猫,就是利用UIImageView的帧动画播放功能实现。

UIImageView动画播放相关属性与方法

在UIImageView类中定义了如下与帧动画播放相关的属性和方法,通过设置这些属性和方法就可以实现帧动画的播放。

  • 图片存放的数组。把所有需要播放的图片有序的放到该数组中
@property (nullable, nonatomic, copy) NSArray *animationImages;
  • 动画播放的时长,默认取值为animationImages中图片的数量*1/30
@property (nonatomic) NSTimeInterval animationDuration;
  • 动画播放的次数
@property (nonatomic) NSInteger  animationRepeatCount;
  • 动画播放与停止
- (void)startAnimating; //开始播放
- (void)stopAnimating; //停止播放
- (BOOL)isAnimating; //是否在播放

注意点

由于animationImages数组会在内存中保存大量的图片,且动画播放完毕后不会自动销毁,所以会一直占用较大的内存,因此,动画播放完毕后需要自动清除该属性中保存的图片。通常的操作方式是在动画播放完成后,把该数组指向nil。

//动画播放完毕0.1秒后,清空图片占用的内存
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((imageView.animationImages.count *0.08 +0.1) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        imageView.animationImages = nil;
    });