您的位置:首页 > 其它

WebKit 加载 时 加入动画

2015-10-05 18:08 363 查看
由于UIWebView 确实是有些年头了 并且 很是吃资源,所有 苹果公司在iOS 8.0推出了WebKit框架,

在WebKit框架中,使用WKWebView来代替IOS的UIWebView和OSX的WebView,而且提供了在两个平台可以一致使用的接口。

WebKit框架使得开发者可以在原生App中使用Nitro来提高网页的性能和表现,Nitro就是Safari的JavaScript引擎。

今天用到了WebKit,就想着加载的时候来个饼状图啥的。

首先看看两者的异同吧

第一、WKWebView增加的属性和方法

类比UIWebView,跟UIWebView的API对比,

增加的属性

1、estimatedProgress 加载进度条,在IOS8之前我们是通过一个假的进度条来实现

2、backForwardList 表示historyList

3、WKWebViewConfiguration *configuration; 初始化webview的配置

增加的方法

1、- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration

初始化

3、(WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item;

跳到历史的某个页面

第二、相同的属性和方法

goBack、goForward、canGoBack、canGoForward、stopLoading、loadRequest、scrollView

第三、被删去的属性和方法

1、- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

在跟js交互时,我们使用这个API,目前WKWebView完档没有给出实现类似功能的API

2、无法设置缓存

在UIWebView,使用NSURLCache缓存,通过setSharedURLCache可以设置成我们自己的缓存,但WKWebView不支持NSURLCache

第四、delegate方法的不同

UIWebView支持的代理是UIWebViewDelegate,WKWebView支持的代理是WKNavigationDelegate和WKUIDelegate

WKNavigationDelegate主要实现了涉及到导航跳转方面的回调方法

WKUIDelegate主要实现了涉及到界面显示的回调方法:如WKWebView的改变和js相关内容

具体来说WKNavigationDelegate除了有开始加载、加载成功、加载失败的API外,还具有额外的三个代理方法:

1、- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation

这个代理是服务器redirect时调用

2、- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler

这个代理方法表示当客户端收到服务器的响应头,根据response相关信息,可以决定这次跳转是否可以继续进行。

3.- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

根据webView、navigationAction相关信息决定这次跳转是否可以继续进行,这些信息包含HTTP发送请求,如头部包含User-Agent,Accept

我看了看 好像就这么多不同,

然后开始我们的加载进度条,

加载进度条和饼状图,在上边说了 以前我们都是用的假的,但是WebKit 给我们带来了全新的属性,总算可以做真正的净土条了。

那就是
estimatedProgress属性,我们通过KVO 可以直接得到进度

以下 是代码 。我用的第三方库是JGProgressHUD 挺 不错的。

我做了截图,吧这部分代码,截取下来 大家看看。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: