Instagram的Feed视图是基于UIWebView还是UITableView?

时间:2011-03-24 14:20:17

标签: iphone

它看起来像UIWebView,但它们如何实现下载进度条和部分栏(非常流畅的滚动)......?

6 个答案:

答案 0 :(得分:3)

我已经窥探了他们的日志,如果Feed本身是一个UIWebView,我无法保证,但是当我进入Feed时,出现了一条日志消息:“WebView已加载”。这暗示他们使用UIWebView作为其提要。

我决定做一些研究,似乎我不是唯一一个认为他们可能正在使用UIWebView的人

http://www.lukew.com/ff/entry.asp?1499

答案 1 :(得分:2)

我想说它几乎绝对是一个UITableView。这就是为什么我这么想。

  • 海报的个人资料图片显示在顶部,同时滚动的方式与UITableView显示部分标题完全相同。 (我认为你已经注意到了)
  • 加载下一个单元格时会有轻微的延迟。

滚动非常流畅,但连续视图会更平滑(虽然需要更多内存,页面加载时间会更长)。

他们可能做的是从服务器提取信息并将其缓存在Core Data中。他们从中填充表,直到您单击刷新或关闭并打开应用程序,此时他们重新加载数据并刷新页面。这包括评论,喜欢,描述和图像。

其余部分是选择正确的绘图方法,使UITableViewCells尽可能高效。我不会在这里讨论这个问题,但是你可以做很多工作来使滚动顺利进行。

答案 2 :(得分:2)

如果他们使用的是UIWebView,您应该可以使用Charles轻松识别代理中的流量,例如Wireshark或使用{{3}}嗅探所有网络流量。

将Instagram放到Charles后,我看到它的调用http://instagram.com/api/v1/feed/popular/会返回一组JSON结果。这让我相信它绝对不是UIWebView和在本机代码中创建的东西(几乎肯定是UITableView。正如Andrew所提到的,用户名UI元素的行为与UITableView节标题完全相同一张朴素的桌子。

答案 3 :(得分:1)

@ neo的

我遇到了与本文屏幕截图相同的网关错误:

http://kennethormandy.com/journal/your-favourite-app-isnt-native

安全地说他们使用UIWebView?

答案 4 :(得分:0)

Instagram的做法经过精心优化,所以我要说的话几乎没有说明他们用来制作饲料的所有方法的表面。

他们首先检查缓存,如果不存在,则调用服务器。服务器返回第一个对象元,它们被缓存/存储到磁盘。

然后他们根据数字&amp ;;预先分配单元格的高度。评论的大小。

现在他们设置了他们的IB& UI方法,一切(大部分)都正常执行。

唯一的另一个主要问题是他们使用分页。因此,每次分页时,它们都会缓存/保存到磁盘。

同样,这只是表面。为了使其运行良好,在Feed中实施了大量黑客攻击。如果您打算使用非常相似的模型(内容,评论,个人资料图片等)复制它,那么您需要一些时间才能做到正确。

答案 5 :(得分:0)

@Neo @sgarbesi

本文截图显示,该应用的第四个标签被选中,这是"活动" feed - 显示通知的位置。

http://kennethormandy.com/journal/your-favourite-app-isnt-native

主要供稿(第一个标签)是100%的UITableView。节标题视图包含个人资料图片,名称和地名。