iOS开发(OC)——还在用UIWebView?该用WKWebView了

当我们想加载一些网页的时候,我们就会用到UIWebView,但是细心的朋友会发现,使用UIWebView时,当我加载了好几个网页时,去Xcode看看你app的内存,可能已经超过100多M了,我在网上查了很多有关UIWebView的内存管理控制的方法,都不怎么管用,直到我用了WKWebView。

WKWebView跟UIWebView的作用一样,都可以用来加载网页,但是WKWebView却有着UIWebView无可比拟的优点(唯一的缺点是WKWebView只适用iOS8以上的系统,如果你的app要支持iOS7,那只能用UIWebView了

WKWebView的优点:
1、内存占用很低。我用WKWebView来重新加载之前用UIWebView时加载的页面,UIWebView用了100多M,而WKWebView只是30M左右
2、加载速度快。这个优点我暂时还看不出有很大的区别,官方是这么说的,我们就这么相信吧,谁叫你做iOS开发的
3、允许JavaScript的Nitro库加载并使用
4、高达60fps的滚动刷新率以及内置手势

WKWebView的使用

1、首先要导入类库WebKit
2、导入头文件WebKit/WebKit.h
3、代理WKNavigationDelegate
4、代码如下



WKWebView *webview = [[WKWebView alloc] initWithFrame:self.view.frame];
    webview.navigationDelegate=self;
    webview.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:webview];

    //加载页面,self.urlString是网址
    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.urlString]]];
//加载进度
[webview addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:NULL];

5、代理方法(我只写了2个常用的,还有其它的代理方法)

// 页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation
{

}

// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{

}

6、加载进度

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {  
    if ([keyPath isEqualToString:@"estimatedProgress"]){
        if (object == webview){
            //webview.estimatedProgress
        }else{
            [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
        }
    }else{
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

7、记得在dealloc移出KVC,不然会崩溃

[webview removeObserver:self forKeyPath:@"estimatedProgress"];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值