我正在开发一个应用程序,它依赖于在屏幕上显示来自多个来源的大量照片。
我想知道苹果如何在他们的照片应用程序中制作“照片平铺”视图?有这么多照片,在我看来,应用程序应该在一次显示更少照片的情况下给予内存警告(即使我以“缩略图大小”加载照片),但我可以看到,当我缩小时,它可以在一个屏幕上显示数百张照片。
我能想到的一种方法是,这些视图不是单独的照片,而是从照片真实的生成的单个“平铺”图像,因此该应用程序一次只能显示2-3张照片。但这仍然需要大量的CPU功率和时间来快速生成。我可以立即放大或缩小。
我想在我的应用程序中实现类似的功能,任何关于如何实现这一点的方向都将是伟大的。
谢谢你的回答。
2条答案
按热度按时间oxcyiej71#
我做了一些研究,发现IOS8有一个很棒的新框架,叫做“照片框架”
这个框架可以让你轻松地缓存图像,调用预定义大小的缩略图图像和加载项目。(旧的ALAsset库只有一个“缩略图”大小,你必须调整自己的大小。)
在我的测试一个满是20 x20照片的屏幕(我的手机屏幕内容384张图片),应用程序只需要10 MB的内存,滚动时几乎没有 Flink .平滑滚动可以通过优化单元格重载imo实现.
下面是我用来将图像加载到一个20 x20项目大小的uicollectionview的代码:
在viewDidLoad上:
和集合视图数据源方法:
就是这样!
0sgqnhkj2#
使用PHCachingImageManager的苹果示例要好得多,因为它还使用了预热文本,以便缓存正确的资源。请查看https://github.com/robovm/apple-ios-samples/blob/master/ExampleappusingPhotosframework/SamplePhotosApp/AAPLAssetGridViewController.m