簡體   English   中英

在iOS上將本地圖像異步加載到數組中

[英]Load local images into an array asynchronously on iOS

我需要將捆綁包中的約200張圖像加載到內存中的數組中,如下所示:

let arr = (0..<200).map({UIImage(named: "\\($0).png")})

唯一的問題是它需要永遠做。.因此,我想在后台執行該操作,並在作業完成時獲取回調。

我想我可以這樣做:

var arr = [] DispatchQueue.main.async({ arr = (0..<200).map({UIImage(named: "\\($0).png")}) })

但是,我怎么知道該塊何時完成? 謝謝!

編輯:我需要將它們加載到內存中,因為我想在UIImageView像這樣對一系列圖像進行動畫處理:

let img: UIImageView()
img.animationImages = arr
img.duration = 1
img.startAnimating()

您可以創建一個回調並在將圖像加載到后台線程之后調用它,因為圖像將在那里同步加載。

我建議做這樣的事情:

func loadImages(callback: @escaping ([UIImage]) -> Void) {
    DispatchQueue.global(qos: .background).async {
        let array = (0..<200).flatMap({ UIImage(named: "\($0).png") })
        callback(array)
    }
}

可以這樣使用(使用快速尾隨閉包語法):

loadImages { images in
    // do something with the images
}

您可能必須將callback(array) DispatchQueue.mainDispatchQueue.main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM