我目前有一个应用程序主要关注多个页面,这些页面由用户在集合视图中提交的图片填充。
我正在将图片保存到缓存中,因此在初始加载后它不是问题,但是在页面第一次显示时,我遇到了一些问题:
1)让图片仅在他们全部下载后显示,而不是随机显示,直到他们全部加载为止,看起来要好得多。我从下载我的图片Firebase存储。有没有办法做到这一点?
2)我的标签代表了我的单元格上的firebase数据,但在加载图片之前显示这些数字/标签显然很愚蠢。如何处理?
3)当当前用户将图像提交到单元格中时,让图像等待发送到firebase存储然后返回看起来很傻,所以我只是立即将该单元格的图像设置为选择的图片,但是当图像加载图像消失,然后加载图片。
我认为这是因为在我的图像缓存中我需要:
func loadImageUsingNSCache(urlString: String){
self.image = nil
一开始。所以它在加载开始时将其设置为nil,然后发送到图片中。
我尝试将self.image = nil放入我的cellForRow中,但是我仍然遇到大量问题,图片闪烁/处于错误的位置,直到我把它放在这里。
非常感谢任何关于这些的指导。我不知道这些问题是否需要单独提出,但它们似乎紧密相关,可以归类。
答案 0 :(得分:1)
对于1和2,您可以创建一个调度组,将所有下载添加到该组,并在完成后收到通知。这样你就可以实现加载屏幕的某些功能,然后同时显示所有数据。
至于3,我不知道你的缓存是如何实现的,但是我很确定任何体面的缓存引擎都会将上传和下载的图像视为不同的(尽管它在技术上是同样的图片)。
使其工作的一种肮脏方式是在上传时将图片放在那里,就像你已经在做的那样,然后在后台下载它并在没有动画的情况下刷新图像。用户不会注意到您的缓存会更新。