Swift: 帧动画 UIImageView

版权声明:转载请标注原文地址。邮箱[email protected] https://blog.csdn.net/Xoxo_x/article/details/80188453

效果如下:

示意图

代码如下:

//加载图片

public func loadImages(_ complete: @escaping ((_ images: [UIImage])->())) {
    DispatchQueue.global().async {
        guard let imageFolder = Bundle.main.path(forResource: "animation", ofType: nil) else {
            complete([])
            return
        }
        do {
            let names = try FileManager.default.contentsOfDirectory(atPath: imageFolder).sorted()
            var images: [UIImage] = []
            names.forEach({ (name) in
                let path = imageFolder + "/\(name)"
                if let image = UIImage(contentsOfFile: path) {
                    images.append(image)
                }
            })
            DispatchQueue.main.async {
                complete(images)
            }
        } catch {
            DispatchQueue.main.async {
                complete([])
            }
        }
    }
}

//初始化

override func viewDidLoad() {
        super.viewDidLoad()
        loadImages { [weak self](images) in
            self?.animationImageView.animationImages = images
        }
        animationImageView.animationDuration = 2
        animationImageView.animationRepeatCount = 1
    }

//使用

@IBAction func startButtonClick(_ sender: UIButton) {
        animationImageView?.stopAnimating()
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) {[weak self]in
            self?.animationImageView?.startAnimating()
        }
    }

//Demo地址:后续贴出

猜你喜欢

转载自blog.csdn.net/Xoxo_x/article/details/80188453
今日推荐