带完成块的 SDWebImage 预取

SDWebImage Prefetching with completion block

我的目标是用 'loading screen' 覆盖一个 collectionView,在 SDWebImage 将预取图像数组中的所有图像加载到缓存中之前,它不会被隐藏。

在我的 viewDidLoad 中,我检索了一组图像 URL,它将用于填充集合视图。检索到它们后,我计划使用 SDWebImagePrefetcher 来处理数组。

到目前为止我有以下内容:

let urls : [URL] = [URL(string: "https://trialwebsite.com/image1.png")!,URL(string: "https://trialwebsite.com/image2.png")!,URL(string: "https://trialwebsite.com/image3.png")!]

 SDWebImagePrefetcher.shared().prefetchURLs(urls)

我正在努力弄清楚的是如何在处理完所有图像后使用完成块隐藏 'loading' 屏幕。

非常感谢任何帮助。

您可以使用 prefetchURLs:completed: 而不是使用 prefetchURLs,它会有一个包含 finishedCountfinishedCount 的完成块(关闭,因为您正在编写 Swift) =14=] 无符号整数:

如方法文档中所述:

completionBlock

block to be called when prefetching is completed

这似乎是你要的。所以它会是这样的:

SDWebImagePrefetcher.shared().prefetchURLs(urls) { finishedCount, skippedCount in
    // hide the 'loading' screen...
    // you might need to implement your own counting logic 
    // to make sure that all images have been processed.
}

在 Swift v4.1 和 SDWebImage v3.8.2

SDWebImagePrefetcher.shared().prefetchURLs(arrayOfURLS, progress: nil, completed: { finishedCount, skippedCount in
        print("Prefetch complete!")
    })