美文网首页
iOS-GIF图播放

iOS-GIF图播放

作者: 三月望龙 | 来源:发表于2018-07-30 11:16 被阅读0次

封装播放GIF图片的Imageview分类

  • GIF图片来源为本地或网络
  • 导入系统库: import ImageIO
  • 加载本地GIF
 func setGIFImage(gifname: String?) {
        guard let name = gifname else { return }
        guard let path = Bundle.main.path(forResource: name, ofType: nil) else { return }
        guard let data = NSData(contentsOfFile: path) else { return }
        guard let imageSource = CGImageSourceCreateWithData(data as CFData, nil) else { return }
        playGIFWhit(imageSource)
    }
  • 加载网络GIF
 func setGIFImage(urlString: String?) {
        guard let urlStr = urlString else { return }
        guard let url = URL(string: urlStr) else { return }
        guard let imageSource = CGImageSourceCreateWithURL(url as CFURL, nil) else { return }
        playGIFWhit(imageSource)
    }
  • 播放GIF图
private func playGIFWhit(_ source: CGImageSource) {
    let keyframeCount = CGImageSourceGetCount(source)
    var images = [UIImage]()
    var duration: TimeInterval = 0
    for i in 0..<keyframeCount {
        guard let cgimage = CGImageSourceCreateImageAtIndex(source, i, nil) else { continue }
        guard let properties = CGImageSourceCopyPropertiesAtIndex(source, i, nil) ,
            let giftInfo = (properties as NSDictionary)[kCGImagePropertyGIFDictionary as String] as? NSDictionary,
            let keyframeDuration = giftInfo[kCGImagePropertyGIFDelayTime as String] as? NSNumber else { continue }
        images.append(UIImage(cgImage: cgimage))
        duration += keyframeDuration.doubleValue
    }
    
    self.animationImages = images
    self.animationDuration = duration
    self.animationRepeatCount = 0
    self.startAnimating()
}

相关文章

  • iOS-GIF图播放

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

  • iOS-Gif播放

    图片分为静态和动态两种,图片的格式有很多种,在开发中比较常见的是.png和.jpg的静态图片,但有的时候在App中...

  • iOS-GIF分解

    叮叮咚咚铛铛,葫芦娃 demo地址:https://github.com/chjwrr/gif_decompose...

  • 通过CGImageSourceRef播放GIF图

    通过CGImageSourceRef播放GIF图

  • 播放gif图

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

  • iOS - 视频播放AVPlayer

    远程视频播放 单纯的播放, 没有控制UI, 而且如果要显示播放界面, 需要借助AVPlayerLayer, 添加图...

  • Flutter音乐播放器,Easy!

    效果图 单曲播放 列表播放 底部TipsView 详情页 Flutter音频播放器来了!!!需要Flutter视频...

  • iOS 加载GIF动图 -- 解决卡顿问题

    我用的 YYAnimatedImageView 方式加载动图,可以开始播放的时间,是否重复播放,从哪一帧开始播放等...

  • 唱歌

    第一张图是初始化播放声音C3 第二张图初始化播放C4 B4 第三张图按下按钮播放声音C3 第四张图有四个按钮,分别...

  • Power BI可视化设计:自动播放的折线图

    ​ 之前的一篇文章介绍过可以播放的条形图(利用这个控件,轻松制作带播放轴的条形图),这篇文章再看一个播放的折线图效...

网友评论

      本文标题:iOS-GIF图播放

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