一、前言介绍
UIWebView 是 iOS 2 中推出的网页容器,UIWebView是最占内存的控件;直到 iOS 8 以后,苹果推出了 WebKit 框架,其中 WKWebView 正式被推出来接替 UIWebView 的位置;iOS 12 中,苹果正式弃用 UIWebView,要求开发者用 WKWebView 全面替换 UIWebView,apple 官方文档
二、特点对比
UIWebView 特点:
- 1、加载速度慢
- 2、内存占用大,App停留在后台很容易被系统杀死
- 3、原生容器完全不带进度条,需要自定义开发
WKWebView 特点:
- 1、在性能、稳定性、功能方面有很大提升(最直观的提升就是加载网页是占用的内存很少,测试加载不同网页其内存性能提升3倍到4倍,而且没有缓存)
- 2、允许JavaScript的Nitro库加载并使用(UIWebView中限制)
- 3、支持更多的 HTML5 特性
- 4、与 Safari 具有相同的 JavaScript 引擎
三、能力提供
a、加载能力
- UIWebView不仅可以加载 HTML 页面,还支持 pdf、word、txt 以及各种图片的显示;
- 相比 UIWebView 而言,WKWebView 也支持各种文件格式,并新增了加载本地文件,即新增了 LoadFileURL 函数。
1.1 UIWebView加载网页请求
- (void)loadRequest:(NSURLRequest *)request;
1.2 WKWebView加载网页请求
- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request;
2.1 UIWebView加载HTML
- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
2.2 WKWebView加载HTML
- (nullable WKNavigation *)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
3.1 UIWebView加载文件,并指定 MIME 类型和编码类型
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
3.2 WKWebView加载文件,并指定 MIME 类型和编码类型
- (nullable WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL;
4 WKWebView加载本地文件,UIWebView做不到
- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL
b、导航刷新相关
| UIWebView 网页导航相关 | WKWebView 网页导航相关 |
|---|

本文详细介绍了iOS中UIWebView和WKWebView的特性、对比、使用方法,包括加载能力、导航刷新、代理协议等方面。WKWebView作为UIWebView的替代,提供了更好的性能和稳定性,支持更多HTML5特性,并引入了WebKit框架,但同时也带来了一些新的问题,如历史栈缓存策略和内存管理。文章还列举了解决WKWebView中常见问题的方案,如POST请求Body丢失、白屏问题等。

3万+

被折叠的 条评论
为什么被折叠?



