美文网首页
iOS中展示gif图片(swift)

iOS中展示gif图片(swift)

作者: xymspace | 来源:发表于2020-05-09 18:02 被阅读0次

需要导入框架:

import ImageIO

实现步骤:

  • 获取gif图片
  • 获取组成gif图片的总图片数量值
  • 通过遍历,获取单张图片,及其播放时间;累加获得总图片时间
  • 将获得的图片和总时间,传递给图片的animationImages和animationDuration
  • 配置播放次数animationRepeatCount
  • 播放动画 startAnimating()
guard let path = Bundle.main.path(forResource: "img.gif", ofType: nil) else {
            return
        }
        
        guard let data = NSData(contentsOfFile: path) else {
            return
        }
        
        guard let imgSource: CGImageSource = CGImageSourceCreateWithData(data as CFData, nil) else {
            return
        }
        // 获取组成gif的图片总数量(gif都是由很多张图片组成)
        let imageCount = CGImageSourceGetCount(imgSource)
        
        var images = [UIImage]()
        var totalDuration : TimeInterval = 0
        for i in 0...imageCount {
            guard let cgImage = CGImageSourceCreateImageAtIndex(imgSource, i, nil) else {
                continue
            }
            if i == 0 {
                // gif播放完毕时,展示第一张图
                gifImageView.image = UIImage(cgImage: cgImage)
            }
            guard let properties : NSDictionary = CGImageSourceCopyPropertiesAtIndex(imgSource, i, nil) else {
                continue
            }
            // 获取单张图片的播放时长
            guard let gifDic = properties[kCGImagePropertyGIFDictionary] as? NSDictionary else {
                continue
            }
            
            guard let duration = gifDic[kCGImagePropertyGIFDelayTime] as? NSNumber else {
                continue
            }
            // 将播放时间累加
            totalDuration += duration.doubleValue
            // 获取到所有的image
            let image = UIImage(cgImage: cgImage)
            images.append(image)
        }
        
        gifImageView.animationImages = images
        gifImageView.animationDuration = totalDuration
        
        gifImageView.animationRepeatCount = 0
        
        gifImageView.startAnimating()

Gif暂停:

  • 需要自己写定时器
  • 按照图片各自播放时长依次展示
  • 监听用户点击,当用户点击时,获取当前展示图片、播放时间,暂停定时器
  • 用户再次点击时,从暂停时间处开启定时器,判断播放时间,加载对应图片

相关文章

  • iOS中展示gif图片(swift)

    需要导入框架: 实现步骤: 获取gif图片 获取组成gif图片的总图片数量值 通过遍历,获取单张图片,及其播放时间...

  • Swift (四) gif图片播放

    @[TOC](IOS gif图片播放 swift) 1. GIF在iOS平台上的几种加载方式 使用Dispatch...

  • iOS的GIF动画效果实现

    GIF在iOS中的使用场景 GIF在iOS中的使用场景有以下三个方面。 (1)GIF图片分解为单帧图片。 (2)一...

  • iOS gif图片展示

    GIF图片展示原理:将GIF图片转换成对应的图片源,获取到每一帧的原图,将原图数组赋值给UIImageView,进行展示

  • iOS 合成及展示gif图片

    合成 //第一种 //图像目标CGImageDestinationRef destination;//创建输出路径...

  • Mac中的GIF

    为IOS模拟器生成GIF图片 安装GIF神器:GIF Brewery 3 安装成功后打开GIF Brewery 3...

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

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

  • SDWebImage

    SDWebImage介绍 iOS中著名的网络图片处理框架. 包含的功能:图片下载,图片缓存,下载进度监听,GIF处...

  • macOS 开发之- NSImageView

    NSImageView继承于NSControl,是用来展示图片的控件。 创建 展示 Gif NSImageView...

  • iOS中GIF图片的分解、合成与显示

    题记 如我们iOS开发者所知,目前iOS还没有支持原生展现GIF图片,因此合成和分解GIF图片对于我们处理各种动画...

网友评论

      本文标题:iOS中展示gif图片(swift)

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