学习WKWebView控件

如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处。UIWebView是基于移动版的Safari的,所以它的性能表现十分有限。特别是在对几乎每个Web应用都会使用的JavaScript,表现的尤为糟糕。

但是,所有的这一切都在iOS 8引入了一个新的框架——WebKit,之后变得好起来了。在WebKit框架中,有WKWebView可以替换UIKit的UIWebView和AppKit的WebView,而且提供了在两个平台可以一致使用的接口

直接步入正题

1、和很多控件一样,首先创建对象 这个和UIWebview差不多

    web  = [[WKWebView alloc]initWithFrame:self.view.bounds];
    web.navigationDelegate = self;
   
    [self.view addSubview:web];
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sina.com"]]];

2、为了美观,在导航条下面价格进度条
 progress = [[UIProgressView alloc]initWithFrame:CGRectMake(0, 65, CGRectGetWidth(self.view.frame), 2)];

    
    [self.view addSubview:progress];
    [web addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld context:nil];

3、实现观察者模式中观察webview的加载进度 展示在progressview上
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    NSLog(@"change = %@",change);
    if ([keyPath isEqual: @"estimatedProgress"]) {
        if (web.estimatedProgress == 1) {
            progress.hidden = YES;
        
        }
        NSLog(@"--->%f",web.estimatedProgress);
        [progress setProgress:web.estimatedProgress animated:YES];
    }
}
4、实现wkwebview的代理方法 将会在页面载入完毕后执行。当一个任务完成后,我们使用它来重置progress view的进度。
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    [progress setProgress:0.0 animated:false];
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值