2010-01-24 60 views
0

我有一个uiscrollview,我逐个添加uiimageviews,但是当我添加超过40个对象时,我有内存问题,我猜测应用崩溃了......我应该怎么做?我正在尝试制作一个应用程序,如苹果的照片查看器!请帮助!如何在uiscrollview中添加超过100个uiimageviews

我不想thumbnais我只是想显示下一个图像时,从一个到另一个用户轻弹,但我必须卸载以前的图像和显示下一个

我删除以前像这样

UIImageView l; 

l=[[scroll subviews] objectAtIndex:0]; 
[l removeFromSuperview]; 
l=nil; 

,然后我补充下一个这样的

[scroll insertSubview:imageView atIndex:counter]; 

,但我看到了一个黑色的背景没有图像

请帮忙!

回答

1

要做到这一点,最好的方法是一次将一些图像加载到表格视图中。在表格的每个单元格中,放置三个缩略图。您需要制作自定义单元格。这样,表单元格将被取出队列并重新使用内存。查看Facebook Three20项目,我认为他们已经实现了,所以你需要一些代码来处理。

http://joehewitt.com/post/the-three20-project/

1

问问自己,你是否真的需要将全部100张图片加载到内存中?为什么不只是在后台加载一些图像,取决于用户滚动到的图像?

+0

我不想将100张图片加载到内存中我想卸载当前加载的上一张图片并添加(加载)下一张图片。从内存中删除以前的图片并添加下一张图片... – stefanosn 2010-01-24 11:15:55

1

不要那样做。

如果要显示100个小缩略图,请先用核心图形调整它们的大小。然后,当你一次显示100张图像时,它们占用的内存要少得多。

如果要显示100张大图像,但每次只能看到一张图像,请使用1或2张图像视图加载当前图像和下一张图像,并以巧妙的方式为它们制作动画,使其看起来无尽流。你仍然可以使用scrollView,只需监视它的位置并适当地定位你的图像视图。

+0

我不想要thumbnais我只是想显示下一张图片,当用户从一个滑动到另一个 – stefanosn 2010-01-24 11:19:40

+0

享元模式 – Nimrod 2010-01-24 18:06:20

+0

Flywieght模式确实 – 2012-02-09 14:15:01

0

恰好有一个苹果的示例代码,你想要什么做的。查找PageControl示例,它已经实现。基本上滑块从控制器阵列中获取图像控制器;除此之外,当滚动器更改为上一张或下一张图片时,控制器会动态添加并从该阵列中移除以保持内存占用空间不足。看看示例代码,它很简单。 希望它有帮助。