WebKit
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebKit相关的知识,希望对你有一定的参考价值。
1.WKWebView新特性
- 在性能、稳定性、功能方面有很大提升、最直观的体现就是加载网页是占用的内存、模拟器加载百度与开源中国网站时、WKWebView占用23M--而UIWebView占用85M。
- 支持了更多的html5特性。
- 高达60fps的滚动刷新率以及内置手势。
- 将UIWebViewDelegate与UIWebView重构成了14类与3个协议。
2.WKWebView初始化
- 2.1. 首先需要引入WebKit库
#import <webkit/webkit.h>
- 2.2. 初始化方法分为以下两种
// 默认初始化
- (instancetype)initWithFrame:(CGRect)frame;
// 根据对webview的相关配置 进行初始化
- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration;
- 2.3. 加载网页与HTML代码的方式与UIWebView相同 代码如下:
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
[webView loadRequest:[NSURLRequestrequestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];
[self.view addSubview:webView];
3.WKWebView的代理方法
- 1. WKNavigationDelegate
该代理提供的方法 可以用来追踪加载过程:页面开始加载、加载完成、加载失败、决定是否执行跳转。
// 页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
// 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation;
页面跳转的代理方法有三种。分为:收到跳转与决定是否跳转两种
// 接收到服务器跳转请求之后调用
- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;
// 在收到响应后,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void(^)(WKNavigationResponsePolicy))decisionHandler;
// 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;
- 2. WKUIDelegate
// 创建一个新的WebView
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures;
剩下三个代理方法全都是与界面弹出提示框相关的 针对于web界面的三种提示框:警告框、确认框、输入框 分别对应三种代理方法。
警告框的例子:
/**
* web界面中有弹出警告框时调用
*
* @param webView 实现该代理的webview
* @param message 警告框中的内容
* @param frame 主窗口
* @param completionHandler 警告框消失调用
*/
- (void)webView:(WKWebView *)webView runjavascriptAlertPanelWithMessage:(NSString*)message initiatedByFrame:(void(^)())completionHandler;
以上是关于WebKit的主要内容,如果未能解决你的问题,请参考以下文章