我拥有的是tableView。在每个单元格中,我显示图像和名称以及旁边的一些细节。图像在服务器上。对于图像我正在做的是下面。
UIImageView *imagePathImage = (UIImageView *)[cell viewWithTag:9999999984];
test1 = [NSString stringWithFormat:@"%@", [[news objectAtIndex:indexPath.row] objectForKey:@"imagePath"]];
if ([test1 isEqualToString:@"missing"]) {
imagePathImage.image = [UIImage imageNamed:@"no_image.png"];
} else {
imagePathImage.image = [[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:[NSString stringWithFormat:@"http://www.mysite.com/sama/myImages/image%@.jpg", [[news objectAtIndex:indexPath.row] objectForKey:@"id"] ]]]] retain];
}
我正在以JSON格式提取数据。
问题是当我向下滚动时,加载下一个项目需要时间,因为我提供了服务器路径的图像。如果我隐藏图像代码,滚动速度会快得多。但是,当我有图像加载图像需要时间。
我的问题是,iPhone应用程序中的此类行为是否正常,或者我应该首先下载图像(本地)然后再显示它们?
OR
在存储图像时,我应该将图像分辨率更改为60x60,因为我的图像图标大小为60x60。
答案 0 :(得分:0)
将图片大小调整为您在应用中使用的最大尺寸,这样可以节省内存并缩短下载时间。
如果这没有帮助或者没有充分提高性能,请调查延迟加载的图像,因为它们会滚动到视图中。
编辑:正如其他人所说,你也应该在另一个线程上异步加载它们。
答案 1 :(得分:0)
尝试延迟加载图片。你可以得到一个例子here。
答案 2 :(得分:0)
我会以异步方式加载它们。
看一下本教程。它很容易理解,几乎完全符合您的需求。 http://www.markj.net/iphone-asynchronous-table-image/
答案 3 :(得分:0)
首先,使用EGOImageView异步加载图片,或者使用NSThread分别加载线程。
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(requestImageFromServer) object:nil];
[thread start];
第二次,缓存已加载的图片。 EGOImageView已经有了这个。使用您自己的逻辑 - 将图像保存到文件系统并获取它们,之前与nil进行比较(使用NSFileManager)。