菜鸟教程小白 发表于 2022-12-13 09:27:44

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


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

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

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

<p><code>files</code> 是从文档目录中获取的图像路径的 <code>array</code>。</p>

<p>我已获取所有图像路径并存储在 <code>files 数组</code>中。</p>

<pre><code>int x=2,y=5;
for (int i = 0; i &lt; files.count ; i++)
{
   if(x&lt;=308)
    {
       NSString *setPath=];
       UIImage* imagePath = ;
       imgView=[initWithFrame:CGRectMake(x, y, 77, 75)];
       imgView.image=imagePath;
       x+=80;
    }
    else
    {
      x=2;
      y+=77;

      NSString *setPath=];
      UIImage* imagePath = ;
      imgView=[initWithFrame:CGRectMake(x, y, 77, 75)];
      imgView.image=imagePath;
      x+=80;
    }
      ;
      ;
         gallaryScrollView.contentSize=CGSizeMake(320, y+120);
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>缓存不会解决您的内存问题。 (如果有的话,使用额外的内存缓存只会给应用程序带来更多的内存压力。)您使用缓存是出于性能原因,而不是为了减少内存使用量。</p>

<p>问题是您正试图将 ImageView 加载到前面的 ScrollView 中。我建议对 ImageView 及其相关图像进行延迟加载。而不是分批进行 15 个(或其他),我建议在您的 <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/index.html" rel="noreferrer noopener nofollow"><code>UIScrollViewDelegate</code></a> 中动态进行。方法:</p>

<ul>
<li><p>为 ScrollView 设置 <code>delegate</code>; </p></li>
<li><p>实现 <code>scrollViewDidScroll</code> 这将:</p>

<ul>
<li><p>从 ScrollView 中移除不可见(或至少不可见)的所有 ImageView </p></li>
<li><p>添加任何已滚动到 View 中的 ImageView 并设置其 <code>image</code> 属性</p></li>
</ul></li>
</ul>

<p>如果出于性能原因您想将此与 <code>NSCache</code> 结合使用以进行缓存,您可以根据需要这样做,但我建议首先关注主要的手动 ScrollView 委托(delegate)实现。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何使用objective-c将图像存储在缓存中,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31701011/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31701011/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何使用objective-c将图像存储在缓存中