美文网首页
iOS开发 播放Gif图,且只播放一次

iOS开发 播放Gif图,且只播放一次

作者: 我是卖报的小行家 | 来源:发表于2023-08-07 09:56 被阅读0次

市面上播放GIF的控件很多,比较了几款后最后决定使用YYAnimatedImageView,简单易懂,且不会像FLAnimatedImageView导致内存暴涨
直接上代码

  YYAnimatedImageView *gifImageView = [[YYAnimatedImageView alloc] initWithFrame:CGRectMake(0, kNavigationBarHeight + 40,scaleFactorForWidth(400), scaleFactorForWidth(302))];
  YYImage *img = [YYImage imageNamed:@"snore_gif.gif"];
  gifImageView.image = img;
  [self addSubview:gifImageView];

此时有个需求,GIF只需播放一遍

//1.获取GIF图的图片总数
NSArray *imagesArray = [self getImageFromGifResource:@"snore_gif"];
//2.监听gif
    [RACObserve(gifImageView, currentAnimatedImageIndex) subscribeNext:^(id _Nullable x) {
        if ([x integerValue] == imagesArray.count - 1) {
            [gifImageView stopAnimating];
        }
    }];
//这样就会只播放一遍,紫萼停留在最后一帧

获取GIF图片总数

- (NSArray <UIImage *>*)getImageFromGifResource:(NSString *)resource {
    NSMutableArray *imageArray = [NSMutableArray array];
    
    // 获取gif url
    NSURL *url = [[NSBundle mainBundle] URLForResource:resource withExtension:@"gif"];
    // 转换为图片源
    CGImageSourceRef gifImageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, nil);
    // 获取图片个数
    size_t framesCount = CGImageSourceGetCount(gifImageSourceRef);
    for (size_t index = 0; index < framesCount; index ++) {
        CGImageRef imageRef = CGImageSourceCreateImageAtIndex(gifImageSourceRef, index , nil);
        
        UIImage *image = [UIImage imageWithCGImage:imageRef];
        [imageArray addObject:image];
        
        CFRelease(imageRef);
    }
    
    return imageArray;
}

相关文章

  • iOS 播放GIF图

    本文记录两种在iOS上播放GIF的方法 第一种:用UIWebView播放GIF图 如果想让webView的内容自适...

  • ios处理图片的一些小Tip(转)

    如何把 GIF 动图保存到相册? iOS 的相册是支持保存 GIF 和 APNG 动图的,只是不能直接播放。用 [...

  • 通过CGImageSourceRef播放GIF图

    通过CGImageSourceRef播放GIF图

  • iOS处理图片的一些小Tip

    一.如何把GIF动图保存到相册 iOS 相册是支持保存GIF和APNG动图的,只是不能直接播放.使用[ALAss...

  • iOS-GIF图播放

    封装播放GIF图片的Imageview分类GIF图片来源为本地或网络导入系统库: import ImageIO 加...

  • iOS-播放gif动画文件(OC方法)

    iOS-.gif动画文件的播放 前言 播放gif动画的方法有多种: 将gif图片分解成多张图片使用UIImageV...

  • 使用UIImageView播放动图

    动图大家都会想到gif图片,但是在iOS端不能够播放gif格式图片怎么办呢。。。 其实苹果为开发者提供的控件足以让...

  • 播放gif图

    先看下模拟器的效果 gif图其实也是一张张的图片组合在一起,1s如果能播放15帧的话,人眼就不会感到明显的卡顿,一...

  • iOS开发:让GIF动画只播放一次

    工作中我们拿到的是一个GIF文件,如果不作处理,直接使用SDWebImage就会无限次播放,那么我们只要他播放一次...

  • iOS 播放GIF

    iOS默认是不支持播放GIF图片的,但是系统也没有禁止播放它,该有的API还是有的,下面就 来一发吧! 一定要导入...

网友评论

      本文标题:iOS开发 播放Gif图,且只播放一次

      本文链接:https://www.haomeiwen.com/subject/vchgpdtx.html