0

我拥有的是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 应用程序中的这种行为是可以的,还是我应该先下载图像(本地)然后显示它们?

或者

在存储图像时,我应该将图像的分辨率更改为 60x60,因为我的图像图标大小为 60x60。


编辑 1

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

调整图像大小

4

4 回答 4

0

将您的图像大小调整为不大于您在应用程序中使用的最大尺寸,这将节省内存并减少下载时间。

如果这没有帮助或不能充分提高性能,请在滚动到视图时调查延迟加载图像。

编辑:正如其他人所说,您还应该在另一个线程上异步加载它们。

于 2013-03-07T11:43:35.417 回答
0

尝试延迟加载图像。你可以在这里得到一个例子。

于 2013-03-07T11:48:45.490 回答
0

我会异步加载它们。

看看这个教程。它很容易理解,并且几乎完全符合您的需要。 http://www.markj.net/iphone-asynchronous-table-image/

于 2013-03-07T11:50:20.800 回答
0

首先,使用EGOImageView异步加载图像,或者使用 NSThread 将图像分离到线程中。

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(requestImageFromServer) object:nil];
[thread start];

其次,缓存已经加载的图像。EGOImageView 已经有了。使用您自己的逻辑 - 将图像保存到文件系统并获取它们,之前与 nil 进行比较(使用 NSFileManager)。

于 2013-03-07T13:51:32.143 回答