2013-04-23 121 views
-1

我有一个显示由url设置的图像的scrollView。现在我只想将可见图像和上一张和下一张图像预先加载到scrollView上以减少内存使用量。我该如何做到这一点?从UIScrollView中删除'隐藏'的图像

+1

你有什么试过? +可能你可以使用UICollectionView而不是“原始”滚动视图,所以将获得重用功能开箱 – Vladimir 2013-04-23 10:25:26

回答

0

如果您使用UITableView而不是UIScrollView,则可以创建自己的UITableViewCell类型,在其内容中加载1个图像。

好处是只有可见的UITableViewCells(当前显示在设备屏幕上的那些)被加载到系统内存中,所以它不会使用太多的资源。

Here是您可以在互联网上找到的许多CustomCell教程之一。

1

当我做同样的事情时,我创建了3倍大小的UIScrollView。足够大以容纳3张图像,即当前显示的图像和右下角的下一个兄弟图像。

如果这些图像之前没有加载过,则会预加载这些图像。所以用户有一些流畅而敏感的外观&的感觉。

当用户滚动到下一个,他只能滚动一个,然后我重新排列视图。可以说图像1,2和3在滚动视图中,而2是可见的,所以1,2(和3)被(预)加载。用户向右滚动。图像3将可见。只要它变得完全可见,我再次将滚动视图的可见矩形设置到中间。现在图像2是最左边的一个,图像3可见并且图像4被放置为最右边并且预先加载。

当到达图像列表的末尾时,即显示第一个或最后一个图像的末尾,然后我在最左边或最右边放置一个虚拟视图,这是一个简单的文本视图,显示“没有更多图片”。

很抱歉,我无法分享该代码。

+0

是的,我有这样的东西已经工作,我的问题是删除图像不可见..太糟糕了,你可以我不会分享一些代码,因为这对我来说真的很有帮助 – Daantjeeuh 2013-04-23 12:03:30

+0

不,这段代码并没有什么帮助,因为它“嵌入”了一些相当困难的商业逻辑,并且我在那里犯了一些概念错误,因为那是我的第一个真正的应用程序。你有什么问题去除图像?我使用了某种应用程序内部缓存,我将它们保存在字典中,当内存警告进入时,我删除该字典中最旧的一半。与此同时,我学会了更好的缓存解决方案。但是,除去它们的具体问题是什么? – 2013-04-23 12:46:27