如何在uiscrollview中添加超过100个uiimageviews

时间:2010-01-24 10:50:06

标签: iphone uiscrollview uiimageview

我有一个uiscrollview并且我逐个添加uiimageviews但是当我添加超过40个对象时,我有内存问题,我猜应用程序崩溃...我该怎么办?我正在尝试制作像苹果照片浏览器的应用程序!求救!

我不想要thumbnais我只是想在用户从一个镜头轻弹到另一个时显示下一个图像,但我必须卸载上一个图像并显示下一个图像

我删除了之前的这个

UIImageView l;

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

然后我像这样添加下一个

[scroll insertSubview:imageView atIndex:counter];

但我看到黑色背景没有图像

请帮忙!

4 个答案:

答案 0 :(得分:1)

问问自己,真的是否需要将所有100张图片加载到内存中?为什么不在后台一次加载一些图像,具体取决于用户滚动到哪个图像?

答案 1 :(得分:1)

不要这样做。

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

如果要显示100张大图像,但一次只能显示一张图像,请使用1或2张图像视图加载当前和下一张图像,并以巧妙的方式为它们设置动画,使其看起来层出不穷。您仍然可以使用scrollView,只需监视它的位置并正确定位图像视图。

答案 2 :(得分:1)

执行此操作的最佳方法是一次将一些图像加载到表格视图中。在表格的每个单元格中,放置三个缩略图。你需要制作一个自定义单元格。这样,表格单元格将被排队并重新使用内存。检查Facebook Three20项目,我认为他们已经像这样实现了它,所以你将有一些代码可以使用。

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

答案 3 :(得分:0)

有一个苹果示例代码可以满足您的需求。查找PageControl示例,它已经实现。基本上滑块从一组控制器获取图像控制器;除此之外,当滚动条更改为上一个或下一个图像时,动态添加控制器并从该数组中删除控制器以保持较低的内存占用。 看看示例代码,很简单。 希望它有所帮助。