UIwebView计算进度方法以及demo

在上家公司做事的时候有一个需求,需要计算图片,pdf,网页等文档的阅读进度,开始我准备借助开源的阅读器框架做完整的需求,和项目经理商量后,作为一个小功能,我们并不需要这么强大的功能。

1.问题的研究
我一开始把焦点放在JS中,希望能通过JS的特性来获得。

    NSInteger height = [[documentWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
    NSInteger htmlheight = [[documentWebView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] integerValue];

以此为想法编写demo的时候,发现有些页面这个高度有时候会是个错误的数据,并且无法计算拖动的高度。
既然webview有滑动条,会不会有scrollview在其中?
2.问题的解决


UIwebView计算进度方法以及demo_第1张图片
Paste_Image.png

用xcode自带的Debug view Hierarchy,查看了一下UI构成果然是有一个scrollview。
这样我们能直接从可以计算scrollView的高度与滑动距离
计算公式:

(scrollView.contentOffset.y+scrollView.bounds.size.height) /documentHeight

在封装的时候需要注意到,屏幕也是有高度的,做进度自动跳转时至少跳转进度要大于屏幕和文档总高度的比例。
期间坑还是有不少的,于是我写了一个demo,让大家可以直接使用pressent的vc或push的vc都能直接 addSubview。
github:https://github.com/xia89757/XWLWebView

你可能感兴趣的:(UIwebView计算进度方法以及demo)