gpt4 book ai didi

ios - UITableView 滞后于大图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:47 27 4
gpt4 key购买 nike

我面临的问题是添加一堆垂直相邻的图像并使整个图像可滚动。图片为 768x768。我正在为此使用 UITableView。

首先,我尝试通过使用以下方法将单个单元格出队来简单地做到这一点:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

由于我的设备在垂直方向上只能容纳一个半这样的图像 - 每次要加载新图像时我都会遇到延迟。

所以...我想我会通过在应用程序加载时缓存数组中的所有单元格来简单地进行测试。所以现在在我的检索单元格的方法中看起来像这样:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
PhotoItemCellController *cell = [imgs objectAtIndex:[indexPath row]];
return cell;
}

奇怪的是:所有这些都与在需要时动态加载图像相同 - 仍然存在相同的滞后......但是......当我滚动整个表格到它的末尾时 - 表格开始完美地工作(显然发生了某种缓存)。

  • 为什么会这样?
  • 可能是因为我使用的是一组单元格而不是将它们从表中“出队”?
  • 可能是因为单元格包含 UIImageView?也许它在第一次展示时做了一些事情。

我还注意到只有当我滚动浏览表格时 RAM 使用量才会激增,而当我在应用程序启动时将所有单元格及其图像加载到内存中时几乎没有消耗。

任何想法表示赞赏

最佳答案

UIImage 由某种能够延迟加载的智能缓存支持。图像文件很可能在需要时才加载到内存中。在为您的图像创建 OpenGL 纹理时也有一点延迟(UIKit 在幕后执行此操作,因为它使用 OpenGL 进行渲染)。如果您只想平滑滚动,您可以在前台显示一个微调器,并创建一系列 UIImageViews,您在 UITableView 后面逐个显示它们(并且您保留 UIImageViews 以生成您的单元格)。这样,您将在用户开始滚动之前将所有数据缓存并(希望)在纹理中的 OpenGL 上下文中。

关于ios - UITableView 滞后于大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202490/

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