gpt4 book ai didi

ios - SDWebImageCache 预缓存图像

转载 作者:行者123 更新时间:2023-11-29 12:12:39 25 4
gpt4 key购买 nike

我正在使用 SDWebImage 插件,我遇到了以下情况:我有两个 UIViewController 的 A 和 B。在 UIViewControllerB 中,我正在加载一个系列10 - 15 张来自网络的 UIImageView 图像,代码如下:

UIImageView *imageView = [[UIImageView alloc] init];
[imageView sd_setImageWithURL:[NSURL URLWithString:[sourceDictionary objectForKey:@"image"]]
placeholderImage:[UIImage imageNamed:@"placeholder"]];

这很好用。除了在用户加载 UIViewControllerB 后我开始下载这些图像。我想知道我是否有办法在用户仍在使用 UIViewControllerA 时开始预缓存或开始下载这些图像,以便当用户到达 UIViewControllerB他们看到更短的延迟?如果用户在下载过程中切换到第二个 View Controller ,我将如何以某种方式执行此操作,以便图像不会被下载两次?

最佳答案

可能的解决方法是使用单例模式实现自定义下载管理器,因此它在 AB 中都可用。

然后您可以跟踪请求下载的图像 URL 列表以及下载完成时要调用的 completed 处理程序。

首先,您检查具有相同 URL 的图像的下载是否已经发生,然后将图像添加到列表和完成的处理程序中,或者只添加新的处理程序。您可以使用字典作为存储,使用 URL 作为键。

然后你可以使用 SDWebImageManagerdownloadImageWithURL 方法,在 completed 方法中你从列表中删除图像并触发相应的 completed 处理程序。

所以在 B 你知道下载已经完成。您不必使用 SDWebImageCache 手动缓存图像,让 SDWebImage 自动为您做这件事,所以当您的 on completed 方法被调用时,只需像您一样做, 但由于图像已经下载 SDWebImage 将从缓存中获取它。或者,您可以将下载的 UIImage 发送回 completed 处理程序。

关于ios - SDWebImageCache 预缓存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com