gpt4 book ai didi

iphone - 从 ios sdk 中的文档目录加载图像

转载 作者:行者123 更新时间:2023-11-28 18:22:10 25 4
gpt4 key购买 nike

我实现了 Collection View ,在其上显示文档目录中的图像。

但是由于从文档加载图像, Collection View 滚动不流畅。

如果图像是从主包加载的,那么它工作正常。

我的代码如下:

UIImageView *img=[[UIImageView alloc]init];
img.image=[UIImage imageWithContentsOfFile:[[arr_images objectAtIndex:indexPath.row]valueForKey:@"Image_path"]];
img.contentMode=UIViewContentModeScaleAspectFit;
cell.backgroundView=img;

我应该使用线程吗?如果是,我该怎么做?我该如何解决这个问题??

最佳答案

无需使用线程。偶尔加载图像没问题,问题是你不断地加载图像。

从主包加载可能工作正常,因为 NSBundle 正在为您缓存图像。您可以使用 NSCache 自己做同样的事情.

所以不是这个:

img.image=[UIImage imageWithContentsOfFile:[[arr_images objectAtIndex:indexPath.row]valueForKey:@"Image_path"]];

做类似的事情:

static NSCache *cache = nil;
if (!cache) {
cache = [[NSCache alloc] init];
[cache setCountLimit:10]; // check how much RAM your app is using and tweak this as necessary. Too high uses too much RAM, too low will hurt scrolling performance.
}

NSString *path = [[arr_images objectAtIndex:indexPath.row]valueForKey:@"Image_path"];
if ([cache objectForKey:path]) {
img.image=[cache objectForKey:path];
} else {
img.image=[UIImage imageWithContentsOfFile:path];
[cache setObject:img.image forKey:path];
}

如果最后您确实发现需要使用线程,那么我会使用 GCD 线程来加载图像,然后将该图像插入到我在此处的示例代码中创建的同一个 NSCache 对象中。基本上使用后台线程来尝试预测哪些图像需要预加载,但允许 NSCache 决定在销毁这些图像之前将这些图像保留在 RAM 中多长时间。

关于iphone - 从 ios sdk 中的文档目录加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18418277/

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