14.UIWebView自适应高度

场景

最近项目中遇到Native页面内需要内嵌H5页面的需求 内嵌的H5页面用来暂时运营后台动态配置的一些运营内容 需要自适应H5内容的高度

思路

思路一: webViewDidFinishLoad

初遇这个问题时我首先想到的是在webViewDidFinishLoad 这个代理方法中通过获取webViewScrollView的大小去改变内嵌部分的高度

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    //TODO: 获取高度并改变容器大小
}

但是 这个方法执行的时候页面可能还没有完全展示出来,web页面渲染是需要时间的 所以 在webViewDidFinishLoad中去获取到的高度并不准确

思路二: KVO

对! 监听webViewscrollView的contentSize的变化

添加监听

[self.hybridWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

触发

#pragma mark - KVO
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"contentSize"]) {
       //TODO: 获取高度并改变容器大小
    }
}

Last updated