当我从服务器获取图像时滚动速度较慢

时间:2013-03-07 11:40:58

标签: objective-c uitableview ios6 uiimageview

我拥有的是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。


编辑1

我使用了迈克尔罗宾逊的回答。要调整大小,我使用了以下链接中的代码。

Resize Image

4 个答案:

答案 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)。