操作:
导航栏高:64
全屏高:667
webview铺满全屏
webview有些链接页面不自带导航栏等,需要拦截链接,判断后添加导航栏,如果需要添加导航栏,webview的frame需要改变,高度减少导航栏高。如果不需要添加导航栏,webview的的高度再改为原来高度
问题:
在webview的frame变化时,也就是webview的高从小变大的时候,webview的scrollview的frame没有跟着一起变大(webview的高从603变味667,webview的scrollview的高还是603)
解决:
在webview的frame变化时,添加方法setNeedsLayout的调用
setNeedsLayout:标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,在下一轮runloop结束前刷新,对于这一轮runloop之内的所有布局和UI上的更新只会刷新一次,layoutSubviews一定会被调用。
拦截
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
if ([navigationAction.request.URL.absoluteString containsString:@""]) {
self.webView.frame = self.view.bounds;
[self.webView setNeedsLayout];
}else{
self.webView.frame = CGRectMake(0, self.navTitleView.height, self.view.bounds.size.width, self.view.bounds.size.height- self.navTitleView.height);
}
}