您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页iOS 播放GIF

iOS 播放GIF

来源:二三四教育网

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

一定要导入ImageIO 这个 库

//首先你得有个imageview吧~~~~~
 @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 1️⃣.在本地加载Gif图片(不要放在imageassert中,其实也放不进去~~`), 并且转成Data类型(这里不再写swift语法,guard 做一下校验...)
        guard let path = Bundle.main.path(forResource: "demo.gif", ofType: nil) else { return }
        guard let data = NSData(contentsOfFile: path) else { return }
        
        // 2️⃣. 将data转成CGImageSource对象,返回CGImageSource
        guard let imageSource = CGImageSourceCreateWithData(data, nil) else { return }
        //3️⃣通过CGImageSource可以拿到分解了多少张图片(看成是一帧一帧的)
        let imageCount = CGImageSourceGetCount(imageSource)
        
        // 4️⃣遍历所有的图片
        var images = [UIImage]()
        var totalDuration : TimeInterval = 0
        for i in 0..<imageCount {
            // 3️⃣.1️⃣取出图片
            guard let cgImage = CGImageSourceCreateImageAtIndex(imageSource, i, nil) else { continue }
            let image = UIImage(cgImage: cgImage)
            if i == 0 {
                imageView.image = image
            }
            //3️⃣.2️⃣加入到一个images的数组中
            images.append(image)
            
            // 3️⃣.3️⃣取出持续的时间(这里记住就可以了)
            guard let properties = CGImageSourceCopyPropertiesAtIndex(imageSource, i, nil) as? NSDictionary else { continue }
            guard let gifDict = properties[kCGImagePropertyGIFDictionary] as? NSDictionary else { continue }
            guard let frameDuration = gifDict[kCGImagePropertyGIFDelayTime] as? NSNumber else { continue }
            totalDuration += frameDuration.doubleValue
        }
        
        // 4️⃣.给imageView设置属性
        imageView.animationImages = images
        imageView.animationDuration = totalDuration
        imageView.animationRepeatCount = 0
        
        // 5️⃣.开始播放
         imageView.startAnimating()
    }


完美!

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务