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

2023-11-24

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

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

如果您启动 LazyTableImages 示例,然后快速向下滚动,您将看到图像直到after滚动完全停止。

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

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

Thanks!


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

所以,我最终弄清楚如何实现exact关于如何下载/显示图标,与实际应用程序商店中使用的效果相同。

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

  1. 进入根视图控制器并删除有关 cellForRowAtIndexPath 中表格滚动和/或减速的所有检查

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

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


- (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 上......

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 特定时间的 iPhone 本地通知

    我想每周晚上 10 点 无论哪个国家 地区 发出通知 我需要使用时区吗 目前 我使用下面的代码每周触发通知 但如何在晚上 10 点准确触发通知 NSDate date NSDate date NSDate myNewDate date da
  • iPhone SDK - orkut API

    我曾使用 gData 库从 iPhone 中的 Google 联系人中检索联系人信息 同样 我将与 Orkut 合作 有没有像 gData 这样适用于 Orkut 的库 如果是这样 请给我链接 提前致谢 对于 orkut 我们有 orkut
  • JavaScript WebSocket.send 方法会阻塞吗?

    如果我要发送大量Blob or ArrayBuffer通过 JavaScriptWebSocket通过其send方法 是否send方法调用会阻塞 直到发送数据为止 还是会复制数据以异步发送 以便调用可以立即返回 一个相关的 未回答的 问题是
  • PHP 裁剪图像以固定宽度和高度而不丢失尺寸比例

    我希望创建尺寸为 100 像素 x 100 像素的缩略图 我看过很多解释这些方法的文章 但如果要保持尺寸比 大多数文章最终都会有宽度 高度 例如 我有一个 450 像素 x 350 像素的图像 我想裁剪为 100px x 100px 如果我
  • 如何褪色

    我想将像素的颜色淡化为白色 但显然保持相同的颜色 如果我有一个像素 200 120 40 将每个值加上 10 以使 210 130 50 使其颜色相同 只是颜色更浅 还是会完全改变颜色 例如 我知道 100 100 100 即将 110 1
  • 我应该在 Promise.all 中使用 wait 吗?

    我正在构建快速中间件 以对数据库进行两次异步调用 以检查用户名或电子邮件是否已在使用中 这些函数返回的承诺没有捕获 因为我想将数据库逻辑与 req res next 逻辑分开 并且我有集中的错误处理 需要next作为一个论点 在我对本地环境
  • 您有什么方法可以从相机胶卷转到新的视图控制器吗?

    我正在尝试从相机胶卷转到新的视图控制器 所以基本上我希望能够选择一张图片 并且在选择图片后 它将显示在新视图控制器上的 imageView 上 那个很难做吗 void imagePickerController UIImagePickerC
  • iOS:加载时的设备方向

    似乎当我的应用程序加载时 它不知道其当前方向 UIInterfaceOrientation orientation UIDevice currentDevice orientation if orientation UIDeviceOrie
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • 如何以编程方式更改 iPhone APN(接入点名称)?

    如何以编程方式更改 iPhone APN 接入点名称 或者强制 3G GPRS 连接以编程方式使用特定的 APN 无法通过 SDK 完成 第三方应用程序无法对硬件进行这种级别的控制 尤其是蜂窝调制解调器
  • com.couchbase.client.java.query.dsl.Sort 问题的解决方案是什么?

    这是获取类的错误之一 import com bookingsite acme config document paymentoption PaymentGatewayConfiguration import com bookingsite
  • 从 UIPickerView 的选定行设置 UIButton 的标题

    详细场景是这样的 我使用循环创建 10 个按钮并设置 0 9 的标签 点击每个按钮时 我将调用 UIPickerView 在其中加载来自不同数组的数据 到这里我就得到了预期的结果 但我希望 pickerView 中选定的行应设置为相应按钮的
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • 如何从图像中识别车辆牌照/车牌(ANPR)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个网站 允许用户上传汽车图像 我想放置一个隐私过滤器来检测车辆上的车牌并对其进行模糊处理 模糊不是问题 但是是否有库或组件 首选
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 如何在 iPhone 上使用带有线程的 sqlite + fdbm 库

    相关这个问题 https stackoverflow com questions 1082554 我想把数据加载放在后台 但是 我收到 库例程调用不按顺序 错误 In 这个所以线程 https stackoverflow com quest
  • UIView animateWithDuration:delay: 工作很奇怪

    我在使用 iPhone 动画块时遇到了一个奇怪的问题 这段代码 UIView animateWithDuration 2 delay 0 options 0 animations void controller setBackgroundC
  • 如何在 UIScrollView 中启用缩放

    如何启用缩放功能UIScrollView 答案是here https developer apple com documentation uikit uiscrollview 滚动视图还可以处理内容的缩放和平移 当用户做出捏合或张开手势时
  • SwiftUI 全屏图像背景

    我想在背景中显示全屏图像 我已经实现了这个 struct LoginView View var body some View VStack Spacer Text Hallo Text Hallo2 Text Hallo2 Text Hal

随机推荐