我正在开发一个iPhone照片应用程序,其中有一个视图,我在uiscrollview的帮助下显示通过该应用程序拍摄的所有图像。 首先,我简单地加载了包含所有当前图像的scrollview。但它使应用程序变慢并且还导致崩溃发出以下警告:
Received memory warning. Level=2
我google了很多,发现原因可能是在视图上加载如此沉重的图像会导致内存警告并在之后崩溃。所以我选择了延迟加载的概念。
其中我只是将三个图像加载到中心(当前显示给用户),另外两个图像加载到两侧。我是按照以下方式做到的:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
pageNum = (int)(scrollView.contentOffset.x / scrollView.frame.size.width);
pageNumber = floor(pageNum);
[self setImages:pageNumber]; //setting three images
}
现在没有崩溃,没有内存警告,但滚动变得非常粗糙,有很多混蛋。
请建议我如何消除粗糙度或显示与iPhone的默认照片应用程序相同的所有图像。
非常感谢帮助。
注意: 1.没有未知的图像,可以是无限的。 2. Xcode 3.2.6 3. ios sdk 4.3
请考虑链接 [链接] https://www.dropbox.com/sh/h0vwnhhx1acfcb5/W2TQ638udh 该链接显示了一个视频,其中我显示了嵌入了延迟加载的照片滚动条。有时它不会如此快地加载图像,滚动也变得粗糙。
答案 0 :(得分:1)
这是低内存警告,请参阅这些主题
iPhone OS Memory Warnings. What Do The Different Levels Mean?
答案 1 :(得分:0)
好的。如果我理解得很好,你想在UITableView中显示图像,就像在序列中一样,让表格滚动工作正常。
我曾经在我的一个项目中遇到同样的问题,我通过不下载图像并简单地显示它来解决它,更清楚地分为3个步骤:
1 - 创建一个XML文件来存储所有图像的网址,当然还有id
2 - 使用NSXMLParser,获取所有图像Web地址并将其添加到NSArray,然后在UITableView上显示它。您可以将tableView自定义为所有想要设计它的图像。
3 - 在UITableView方法上添加一个UIWebView(这就是密钥)。将图像地址载入此webView。