场景
最近项目中遇到Native页面内需要内嵌H5页面的需求
内嵌的H5页面用来暂时运营后台动态配置的一些运营内容
需要自适应H5内容的高度
思路
思路一: webViewDidFinishLoad
初遇这个问题时我首先想到的是在webViewDidFinishLoad 这个代理方法中通过获取webView的ScrollView的大小去改变内嵌部分的高度
1 2 3
| - (void)webViewDidFinishLoad:(UIWebView *)webView { }
|
但是
这个方法执行的时候页面可能还没有完全展示出来,web页面渲染是需要时间的
所以
在webViewDidFinishLoad中去获取到的高度并不准确
思路二: KVO
对!
监听webView的scrollView的contentSize的变化
添加监听
1
| [self.hybridWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
|
触发
1 2 3 4 5 6
| #pragma mark - KVO - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context { if ([keyPath isEqualToString:@"contentSize"]) { } }
|