它看起来像UIWebView,但它们如何实现下载进度条和部分栏(非常流畅的滚动)......?
答案 0 :(得分:3)
我已经窥探了他们的日志,如果Feed本身是一个UIWebView,我无法保证,但是当我进入Feed时,出现了一条日志消息:“WebView已加载”。这暗示他们使用UIWebView作为其提要。
我决定做一些研究,似乎我不是唯一一个认为他们可能正在使用UIWebView的人
答案 1 :(得分:2)
我想说它几乎绝对是一个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。节标题视图包含个人资料图片,名称和地名。