• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何使用objective-c将图像存储在缓存中

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:27:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 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 中动态进行。方法:

  • 为 ScrollView 设置 delegate

  • 实现 scrollViewDidScroll 这将:

    • 从 ScrollView 中移除不可见(或至少不可见)的所有 ImageView

    • 添加任何已滚动到 View 中的 ImageView 并设置其 image 属性

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap