Iphone 是Instagram';基于UIWebView或UITableView的源视图?
它看起来像UIWebView,但它们如何实现下载进度栏和剖面栏(非常平滑的滚动)…?我想说它几乎完全是一个UITableView。这就是我为什么这么想的原因Iphone 是Instagram';基于UIWebView或UITableView的源视图?,iphone,Iphone,它看起来像UIWebView,但它们如何实现下载进度栏和剖面栏(非常平滑的滚动)…?我想说它几乎完全是一个UITableView。这就是我为什么这么想的原因 海报的个人资料图片显示在顶部,同时以与UITableView显示章节标题完全相同的方式滚动。(我看你已经注意到了) 加载下一个单元格时有轻微延迟 滚动非常平滑,但如果连续查看,滚动会更加平滑(尽管这会占用更多内存,页面加载时间也会更长) 他们可能做的是从服务器中提取信息并将其缓存在核心数据中。他们从此开始填充表格,直到您单击“刷新”或“
- 海报的个人资料图片显示在顶部,同时以与UITableView显示章节标题完全相同的方式滚动。(我看你已经注意到了)
- 加载下一个单元格时有轻微延迟
剩下的就是选择正确的绘图方法,使UITableViewCells尽可能地发挥性能。我不想在这里讨论这个问题,但是你可以做很多事情来使滚动平滑。我已经窥探了他们的日志,我不能保证如果提要本身是UIWebView,但碰巧当我转到提要时,出现了一条日志消息说:“WebView已加载”。这提示他们使用UIWebView作为提要 我决定做一些研究,似乎我不是唯一一个认为他们可能正在使用UIWebView的人
如果他们使用的是
UIWebView
,您应该能够轻松地在代理中识别其流量,例如,使用或嗅探所有网络流量
在把Instagram放到Charles之后,我看到它在调用
http://instagram.com/api/v1/feed/popular/
返回一组JSON结果。这让我相信它绝对不是一个UIWebView
,而是用本机代码创建的(几乎可以肯定是UITableView
。正如Andrew提到的,username UI元素的行为与普通样式表上的UITableView
节头完全相同。Instagram这样做的方式经过了精心的优化,因此我接下来要说的内容几乎没有触及他们制作提要所用的所有方法的表面工作
他们首先检查缓存,如果缓存不存在,则调用服务器。服务器返回对象的第一个元,这些元被缓存/存储到磁盘
然后根据评论的数量和大小预先分配单元格的高度
现在,他们设置了IB和UI方法,所有(大部分)操作都正常执行
唯一的另一个主要问题是,它们使用分页,因此每次分页都会缓存/保存到磁盘
再说一次,这只是表面现象。为了让feed工作得更好,在feed中实施了大量的黑客攻击。如果你打算用一个非常相似的模型(内容、评论、个人资料图像等)来复制它,那么你需要一些时间才能把它做好。@Neo
我遇到了与本文截图相同的网关错误:
安全地说他们使用UIWebView吗?我知道这已经晚了,但我想我有一个答案。几周前我在一个测试项目上工作,试图模仿这一点。我想他们很有可能正在使用UITableView和缓存图像以及其他黑客技术。嗯……我想是的,也许WebView是用于应用程序的另一部分。it could也是一个较旧的版本,因为您的链接是从2012年2月开始的。一个典型的模式是基于
UIWebView发布应用程序,因为开发速度通常更快(尽管性能较差)但我自己今天用他们最新的应用程序对日志进行了窥探,我只是上网看看我的怀疑是否属实。不管怎样,应用程序往往在服务条款、关于美国页面等方面有UIWebView,所以这可能是其中之一。@jszumskiWha你的消息来源是什么?@jsksma2