iOS中WKWebView仿微信加载进度条
本文实例为大家分享了WKWebView仿微信加载进度条的具体代码,供大家参考,具体内容如下
WKWebView添加了estimatedProgress属性(double类型),我们可以利用该属性来设置UIProgressView
github代码仓库上存放的Demo
为页面添加UIProgressView属性
@property(nonatomic,strong)WKWebView*mywebView; @property(nonatomic,strong)UIProgressView*progressView;//设置加载进度条
懒加载UIProgressView
-(UIProgressView*)progressView{ if(!_progressView){ _progressView=[[UIProgressViewalloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; _progressView.frame=CGRectMake(0,64,screen_width,5); [_progressViewsetTrackTintColor:[UIColorcolorWithRed:240.0/255 green:240.0/255 blue:240.0/255 alpha:1.0]]; _progressView.progressTintColor=[UIColorgreenColor]; } return_progressView; }
在初始化WKWebView时(我是在懒加载时)kvo添加监控
[_mywebViewaddObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress)) options:0 context:nil];
页面开始加载时,隐藏进度条
//开始加载 -(void)webView:(WKWebView*)webView didStartProvisionalNavigation:(WKNavigation*)navigation{ //开始加载的时候,让进度条显示 self.progressView.hidden=NO; }
kvo监听进度
//kvo监听进度 -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{ if([keyPathisEqualToString:NSStringFromSelector(@selector(estimatedProgress))] &&object==self.mywebView){ [self.progressViewsetAlpha:1.0f]; BOOLanimated=self.mywebView.estimatedProgress>self.progressView.progress; [self.progressViewsetProgress:self.mywebView.estimatedProgress animated:animated]; if(self.mywebView.estimatedProgress>=1.0f){ [UIViewanimateWithDuration:0.3f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{ [self.progressViewsetAlpha:0.0f]; } completion:^(BOOLfinished){ [self.progressViewsetProgress:0.0fanimated:NO]; }]; } }else{ [superobserveValueForKeyPath:keyPath ofObject:object change:change context:context]; } }
在dealloc方法里移除监听
-(void)dealloc{ [self.mywebViewremoveObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress))]; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。