OGeek|极客世界-中国程序员成长平台

标题: ios - 如何使用objective-c将图像存储在缓存中 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 09:27
标题: ios - 如何使用objective-c将图像存储在缓存中

我在 ScrollView (照片库)中显示多个图像时遇到问题。 我已从文档目录中获取图像。当我显示超过 100 张图像时应用程序崩溃。所以我想将图像存储在缓存中。

我想显示前 15 张图像,然后显示缓存中的其他图像。当我滚动 scrollview 时,将显示缓存中的前 15 个,然后将显示下一个。

要求是在 scrollview 中显示图像,而不是在 collectionView 或其他组件中。

files 是从文档目录中获取的图像路径的 array

我已获取所有图像路径并存储在 files 数组中。

int x=2,y=5;
for (int i = 0; i < files.count ; i++)
 {
   if(x<=308)
    {
       NSString *setPath=[NSString stringWithFormat"%@/%@",filePath,[files objectAtIndex:i]];
       UIImage* imagePath = [UIImage imageWithContentsOfFile:setPath];
       imgView=[[UIImageView alloc]initWithFrame:CGRectMake(x, y, 77, 75)];
       imgView.image=imagePath; 
       x+=80;
    }
    else
    {
        x=2;
        y+=77;

        NSString *setPath=[NSString stringWithFormat"%@/%@",filePath,[files objectAtIndex:i]];
        UIImage* imagePath = [UIImage imageWithContentsOfFile:setPath];
        imgView=[[UIImageView alloc]initWithFrame:CGRectMake(x, y, 77, 75)];
        imgView.image=imagePath;
        x+=80;
    }
        [gallaryScrollView addSubview:imgView];
        [self.view addSubview:gallaryScrollView];
         gallaryScrollView.contentSize=CGSizeMake(320, y+120);
 }



Best Answer-推荐答案


缓存不会解决您的内存问题。 (如果有的话,使用额外的内存缓存只会给应用程序带来更多的内存压力。)您使用缓存是出于性能原因,而不是为了减少内存使用量。

问题是您正试图将 ImageView 加载到前面的 ScrollView 中。我建议对 ImageView 及其相关图像进行延迟加载。而不是分批进行 15 个(或其他),我建议在您的 UIScrollViewDelegate 中动态进行。方法:

如果出于性能原因您想将此与 NSCache 结合使用以进行缓存,您可以根据需要这样做,但我建议首先关注主要的手动 ScrollView 委托(delegate)实现。

关于ios - 如何使用objective-c将图像存储在缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31701011/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4