1. 导入头文件
#import <WebKit/WebKit.h>
2. 实现代理
<WKUIDelegate,WKNavigationDelegate >
3. 创建WKWebView,添加观察者
- (void )setupSubViews {
_webView= [[WKWebView alloc] initWithFrame:CGRectMake(0 , 64 , Screen_Width, Screen_Height - 64 )];
_webView.navigationDelegate = self ;
_webView.UIDelegate = self ;
[self .view addSubview:_webView];
_progressView = [[UIProgressView alloc]initWithFrame:CGRectMake(0 , 65 , CGRectGetWidth(self .view .frame ),2 )];
[self .view addSubview:_progressView];
[_webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld context:nil ];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_urlString]]];
}
- (void )observeValueForKeyPath:(NSString *)keyPath ofObject:(id )object change:(NSDictionary <NSKeyValueChangeKey,id > *)change context:(void *)context {
NSLog (@" %s,change = %@" ,__FUNCTION__,change);
if ([keyPath isEqual: @"estimatedProgress" ] && object == _webView) {
[self .progressView setAlpha:1.0 f];
[self .progressView setProgress:_webView.estimatedProgress animated:YES ];
if (_webView.estimatedProgress >= 1.0 f)
{
[UIView animateWithDuration:0.3 delay:0.3 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self .progressView setAlpha:0.0 f];
} completion:^(BOOL finished) {
[self .progressView setProgress:0.0 f animated:NO ];
}];
}
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
4. 最后重写dealloc方法
- (void)dealloc {
[_webView removeObserver:self for KeyPath:@"estimatedProgress" ];
// if you have set either WKWebView delegate also set these to nil here
[_webView set NavigationDelegate:nil];
[_webView set UIDelegate:nil];
NSLog(@"%d, %s" ,__LINE__, __func__);
}