美文网首页
iOS WKWebView显示网页加载进度条

iOS WKWebView显示网页加载进度条

作者: L小杰 | 来源:发表于2016-08-17 10:30 被阅读1168次

    @property (weak, nonatomic) CALayer *progresslayer;
    //进度条 UIView *progress = [[UIView alloc]initWithFrame:CGRectMake(0, 64, CGRectGetWidth(self.view.frame), 3)]; progress.backgroundColor = [UIColor clearColor]; [self.view addSubview:progress];
    CALayer *layer = [CALayer layer]; layer.frame = CGRectMake(0, 0, 0, 3); layer.backgroundColor = [UIColor blueColor].CGColor; [progress.layer addSublayer:layer]; self.progresslayer = layer;

    添加观察者

    [webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];

    实现

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{ if ([keyPath isEqualToString:@"estimatedProgress"]) { self.progresslayer.opacity = 1; if ([change[@"new"] floatValue] < [change[@"old"] floatValue]) { return; } self.progresslayer.frame = CGRectMake(0, 0, self.view.bounds.size.width * [change[@"new"] floatValue], 3); if ([change[@"new"] floatValue] == 1) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.progresslayer.opacity = 0; }); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.progresslayer.frame = CGRectMake(0, 0, 0, 3); }); } }else{ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } }

    销毁

    - (void)dealloc{ [(WKWebView *)self.view removeObserver:self forKeyPath:@"estimatedProgress"]; }

    相关文章

      网友评论

          本文标题:iOS WKWebView显示网页加载进度条

          本文链接:https://www.haomeiwen.com/subject/dadmsttx.html