gpt4 book ai didi

带有大量图像的 iPhone 桌面 View

转载 作者:行者123 更新时间:2023-12-03 21:00:11 35 4
gpt4 key购买 nike

我有一个UITableView,它在单元格中显示大量图像,并且我对滚动性能并不满意。我的 UITableView 类似于 iPhone 上的照片应用程序。有谁知道为什么 iphone 照片应用程序滚动得如此之快,就好像屏幕上什么也没有一样。

有人有一些提示/技巧来提高我的性能/滚动速度吗?

最佳答案

您应该预先缓存您的图像,而不是懒惰地这样做。当您滚动表格时,UITableViewDataSource:cellForRowAtIndexPath:方法被调用,如果您在其中加载图像,那么您会看到它请求单元格内容作为滚动,从而在应用程序中产生延迟。尝试让你的 cellForRowAtIndexPath: 类似这样:

NSDate *date = [NSDate date];
... your cell loading code ...
NSLog( @"Elapsed time to generate cell %.2d", [date timeIntervalSinceNow] );

您将看到您花费多长时间来获取每个单元格。

要解决这个问题,您可以根据需要变得复杂 - 如果您有很多图像,您就必须变得越来越聪明。您可以进行分页加载,在其中跟踪请求的最后一个单元格的 NSIndexPath,并确定滚动是向上还是向下并使用 +NSImage:imageNamed:立即向前获取一些页面的图像(即,当前位置向前的 5 张图像),或者任何适合你的东西(利用人们必须将手指返回到表格底部才能滑动的事实)再次,因此表格元素的消耗会暂停 - 您可以使页面大小足够大以填充滑动)。不过,这可能仍然不太好,因为您将同时承受所有影响,而不是每个单元都承受紧张的负载。

您可以快速将控制权返回给 UI,并允许系统使用 NSRunLoop:performSelector:target:argument:order:mode: 安排预取的图像页面。使用 NSImage:imageNamed: 关闭主运行循环,然后当请求单元格时,如果您提前提取得足够远,它将可以显示。

不过,您需要痛苦地意识到内存问题。如果您发现这是一个问题,请使用 NSImage:initWithContentsOfFile: ,这将在内存不足的情况下清理图像缓存。根据缓存失效算法使用的策略,这些情况可能会在您清除缓存并必须重新加载失效的预取时导致“卡顿”。

关于带有大量图像的 iPhone 桌面 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247554/

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