iOS WKWebView的使用以及遇到的问题

本文详细介绍了iOS中WKWebView的使用,包括其优势、初始化、属性、代理方法以及在实际使用过程中遇到的坑,如自定义View的添加、HTTPS链接加载和JavaScript交互等问题,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成

iOS WKWebView的使用以及遇到的问题

 

一、WKWebView简介

UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。下面列举一些其它的优势:

1、更多的支持HTML5的特性

2、官方宣称的高达60fps的滚动刷新率以及内置手势

3、Safari相同的JavaScript引擎,且允许JavaScript的Nitro库加载并使用(UIWebView中限制);

4、将UIWebViewDelegate与UIWebView拆分成了14类与3个协议(官方文档说明)

5、占用更少的内存,在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用85M);

另外用的比较多的,增加加载进度属性:estimatedProgress

二、WKWebView初始化

1. 首先需要引入WebKit库

import <WebKit/WebKit.h>

2. 初始化方法分为以下两种

    // 默认初始化
    - (instancetype)initWithFrame:(CGRect)frame;
    // 根据对webview的相关配置,进行初始化
    - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER;复制代码

3. 加载网页与HTML代码的方式与UIWebView相同,代码如下:

   WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
   [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
   [self.view addSubview:webView];复制代码

三、属性介绍

WKBackForwardList:之前访问过的 web页面的列表,可以通过后退和前进动作来访问到。
WKBackForwardListItem: webview中后退列表里的某一个网页。
WKFrameInfo: 包含一个网页的布局信息。
WKNavigation: 包含一个网页的加载进度信息。
WKNavigationAction:包含可能让网页导航变化的信息,用于判断是否做出导航变化。
WKNavigationResponse:包含可能让网页导航变化的返回内容信息,用于判断是否做出导航变化。
WKPreferences: 概括一个 webview 的偏好设置。
WKProcessPool: 表示一个 web 内容加载池。
WKUserContentController: 提供使用 JavaScript post 信息和注射 script 的方法。
WKScriptMessage: 包含网页发出的信息。
WKUserScript:表示可以被网页接受的用户脚本。
WKWebViewConfiguration: 初始化 webview 的设置。
WKWindowFeatures: 指定加载新网页时的窗口属性。
WKNavigationDelegate: 提供了追踪主窗口网页加载过程和判断主窗口和子窗口是否进行页面加载新页面的相关方法。
WKScriptMessageHandler: 提供从网页中收消息的回调方法。
WKUIDelegate: 提供用原生控件显示网页的方法回调。复制代码

四、WKWebView代理

WKWebView有两个delegate,WKUIDelegate 和 WKNavigationDelegate。WKNavigationDelegate主要处理一些跳转、加载处理操作,WKUIDelegate主要处理JS脚本,确认框,警告框等。因此WKNavigationDelegate更加常用。

1. WKNavigationDelegate

该代理提供的方法,可以用来追踪加载过程(页面开始加载、加载完成、加载失败)、决定是否执行跳转。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值