在上家公司做事的時(shí)候有一個(gè)需求檬某,需要計(jì)算圖片,pdf,網(wǎng)頁等文檔的閱讀進(jìn)度哨毁,開始我準(zhǔn)備借助開源的閱讀器框架做完整的需求,和項(xiàng)目經(jīng)理商量后椅亚,作為一個(gè)小功能限番,我們并不需要這么強(qiáng)大的功能。
1.問題的研究
我一開始把焦點(diǎn)放在JS中呀舔,希望能通過JS的特性來獲得弥虐。
NSInteger height = [[documentWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
NSInteger htmlheight = [[documentWebView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] integerValue];
以此為想法編寫demo的時(shí)候,發(fā)現(xiàn)有些頁面這個(gè)高度有時(shí)候會(huì)是個(gè)錯(cuò)誤的數(shù)據(jù)别威,并且無法計(jì)算拖動(dòng)的高度躯舔。
既然webview有滑動(dòng)條,會(huì)不會(huì)有scrollview在其中省古?
2.問題的解決
Paste_Image.png
用xcode自帶的Debug view Hierarchy,查看了一下UI構(gòu)成果然是有一個(gè)scrollview粥庄。
這樣我們能直接從可以計(jì)算scrollView的高度與滑動(dòng)距離
計(jì)算公式:
(scrollView.contentOffset.y+scrollView.bounds.size.height) /documentHeight
在封裝的時(shí)候需要注意到,屏幕也是有高度的豺妓,做進(jìn)度自動(dòng)跳轉(zhuǎn)時(shí)至少跳轉(zhuǎn)進(jìn)度要大于屏幕和文檔總高度的比例惜互。
期間坑還是有不少的,于是我寫了一個(gè)demo琳拭,讓大家可以直接使用pressent的vc或push的vc都能直接 addSubview训堆。
github:https://github.com/xia89757/XWLWebView