我需要在iPad应用程序中显示中等DOM密集型HTML页面的分页幻灯片
所有文档都是针对iPad屏幕定制的,因此UIWebView
内部永远不会滚动。
我决定将UIWebView
放在UIScrollView
内进行分页
在所有网络视图都呈现其内容后,它的工作非常顺利。
但是,在用户可以滚动之前,我无法等待20,30或50个Web视图加载:它需要几分钟。
我尝试在scrollViewDidScroll
处理程序中预测滑动,并且在用户继续滚动时预加载几个下一页。
这样做效果更好(10或150个网页浏览量之间没有性能差异)
但是,在loadHTMLString
处理程序中调用scrollViewDidScroll
会导致滚动失去平滑性。
我不在乎是否需要花费一秒时间来显示特定的UIWebView
- 我想要的只是让滚动变得平滑且尽快可用,并且懒得预加载UIWebView
s在旅途中。
我如何实现这一目标?
答案 0 :(得分:1)
这是一个难题,并没有简单/优雅的方法来解决它。
加速滚动的一种方法是延迟加载页面,如您在问题中所述。但是,为了确保平滑,您必须控制加载何时发生。
所以说你开始在首次发布时加载前5页。当用户滚动到第2页并 STOPS 时,您开始加载第6页。一旦用户再次开始滚动,您只需暂停加载,以便在新页面停止时恢复。暂停其间的加载将有助于平滑滚动。此外,请确保在可能的情况下释放数据,因为它可能会累积并阻碍平滑向下滚动。
另一种选择是只在用户停在页面上时才开始加载UIWebViews。所以说我滚动到页面,滚动停止后我开始加载HTML。这不像第一个选项那样“漂亮”,但它将确保滚动顺畅。
另一个选项,这个有点在那里,是贯穿并加载所有HTML页面的富文本。省去所有DOM密集型的东西。然后抓住那些半载页面using this method的屏幕截图。当用户在页面上停止时,您将一直加载它,包括DOM密集型内容。这将让用户感觉他们正在快速滚动所有加载的内容。
Here is a great scrolling class that I have used before.
祝你好运,我希望这会有所帮助!