温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS中如何使用WKWebView仿微信加载进度条

发布时间:2021-09-28 14:19:40 来源:亿速云 阅读:119 作者:小新 栏目:编程语言

这篇文章主要介绍了iOS中如何使用WKWebView仿微信加载进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体内容如下

WKWebView添加了estimatedProgress属性(double类型),我们可以利用该属性来设置UIProgressView

github代码仓库上存放的Demo

为页面添加UIProgressView属性

@property (nonatomic, strong) WKWebView *mywebView;@property (nonatomic, strong) UIProgressView *progressView;//设置加载进度条

懒加载UIProgressView

-(UIProgressView *)progressView{ if (!_progressView) {  _progressView     = [[UIProgressView alloc]           initWithProgressViewStyle:UIProgressViewStyleDefault];  _progressView.frame    = CGRectMake(0, 64, screen_width, 5);  [_progressView setTrackTintColor:[UIColor colorWithRed:240.0/255               green:240.0/255               blue:240.0/255               alpha:1.0]];  _progressView.progressTintColor = [UIColor greenColor]; } return _progressView;}

在初始化WKWebView时(我是在懒加载时) kvo 添加监控

[_mywebView addObserver: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<NSKeyValueChangeKey,id> *)change      context:(void *)context{ if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))]  && object == self.mywebView) {  [self.progressView setAlpha:1.0f];  BOOL animated = self.mywebView.estimatedProgress > self.progressView.progress;  [self.progressView setProgress:self.mywebView.estimatedProgress        animated:animated];  if (self.mywebView.estimatedProgress >= 1.0f) {   [UIView animateWithDuration:0.3f         delay:0.3f        options:UIViewAnimationOptionCurveEaseOut        animations:^{         [self.progressView setAlpha:0.0f];        }        completion:^(BOOL finished) {         [self.progressView setProgress:0.0f animated:NO];        }];  } }else{  [super observeValueForKeyPath:keyPath        ofObject:object        change:change        context:context]; }}

在dealloc方法里移除监听

-(void)dealloc{ [self.mywebView removeObserver:self      forKeyPath:NSStringFromSelector(@selector(estimatedProgress))];}

感谢你能够认真阅读完这篇文章,希望小编分享的“iOS中如何使用WKWebView仿微信加载进度条”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI