iOS 图文混排页面的实现

1,220 阅读1分钟

需求:图文混排文章内容,文章结束下面有推荐的相关文章,相关视频,以及评论区

实现:tableView的一个section里的一个cell里装一个wkWebView,wkWebView加载html字符串,或者加载h5(目前使用的是加载h5)

问题:需要在h5页面加载完成后得到页面高度,刷新tableVie,但是:
//didFinishNavigation调用时并不代表网页的所有内容都已经加载完了,如一些js文件可能并没有加载完,
//如果此时通过webview调用一些js文件中的方法时可能会失败,解决办法是didFinishNavigation完成后等30ms左右,
//或者通过js调native的方法来通知native网页中的js脚本已加载完成。

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    WS()
    [webView evaluateJavaScript:@"document.body.scrollHeight;" completionHandler:^(id result, NSError * error) {
        if (result) {
            CGFloat webViewHeight = [result floatValue];
            if (webViewHeight>0) {
                weakSelf.model.webHeight = webViewHeight+20;
                
                NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
                [weakSelf.mainTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationAutomatic)];
                
            }
        }
    }

然而,以上回调方法,回调时并不能拿到高度,所以,我延时1秒后拿,还是不一定能拿到。

解决方案:
H5那边在声明周期里获取到页面高度后js交互给我,我再更新页面😊😊😊�