gpt4 book ai didi

iphone - 关于 Apple 的 LazyTableImages 示例的问题 - 行为与应用程序商店不完全相同

转载 作者:行者123 更新时间:2023-12-03 18:38:42 24 4
gpt4 key购买 nike

我有一个带有项目列表的 UITableView,每个项目都有自己的图像。我认为 Apple 的 LazyTableImages 示例项目非常适合学习,并用于在检索原始列表数据后实现异步下载图像的相同过程。

在大多数情况下,它运行得很好,只是我确实注意到这个示例应用程序与实际应用程序商店下载图像的方式之间存在细微的行为差异。

如果您启动 LazyTableImages 示例,然后快速向下滚动,您会发现直到滚动完全停止之后才会显示图像。

现在,如果您对实际应用商店中的项目列表进行相同的测试,您会发现只要新项目进入 View ,图像就会开始显示,即使滚动尚未停止。

我正在努力实现这些相同的结果,但到目前为止我还没有取得任何进展。有人对如何做到这一点有任何想法吗?

谢谢!

最佳答案

我很困惑没有人能回答这个问题......

因此,我最终找到了如何在图标下载/显示方式方面实现与实际应用商店中使用的完全相同的效果。

采用 LazyTableImages 示例项目并进行一些简单的修改。

  1. 进入 Root View Controller 并删除有关 cellForRowAtIndexPath 中表格滚动和/或减速的所有检查

  2. 删除对 loadImagesForOnScreenRows 的所有调用,从而也删除该方法。

  3. 进入 IconDownload.m 并将 startDownload 方法更改为执行异步图像下载,而是在后台线程上执行同步下载。删除startDownload中的所有代码,并添加以下内容,如下所示:


- (void)startDownload
{
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImage) object:nil];

[queue addOperation:operation];

[operation release];
[queue release];
}

然后,添加一个loadImage,如下所示:


- (void)loadImage
{
NSData *imageData = [[NSData alloc] initWithContents OfURL:[NSURL URLWithString:appRecord.imageURLString]];
self.apprecord.appIcon = [UIImage imageWithData:imageData];
[imageData release];

[self performSelectorOnMainThread:@selector(notifyMainThread) withObject:nil waitUntilDone:NO];
}

然后,像这样添加notifyMainThread:


- (void)notifyMainThread
{
[delegate appImageDidLoad:self.indexPathInTableView];
}

完成!运行它,您将看到确切的应用程序商店行为,不再等待请求图像下载直到滚动停止,也不再等待图像显示直到滚动停止或直到用户将手指从屏幕上移开。

当单元格准备好显示时,图像就会被下载,并且图像一旦被下载就会被显示,就这样。

抱歉,有任何拼写错误,我没有从我的应用程序粘贴此内容,而是将其输入,因为我现在不在我的 Mac 旁边...

无论如何,我希望这对大家有所帮助......

关于iphone - 关于 Apple 的 LazyTableImages 示例的问题 - 行为与应用程序商店不完全相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com