对于之前使用的UIWebView,由于性能方面一直被吐槽,所以苹果官方现在推出一款性能极佳的WebKit库来代替UIWebView,WKWebView使用的内存是原来的1/3甚至1/4,WKWebView是现代WebKit API 在iOS8和OS X Yosemite应用中的核心部分。它代替了UIKit中的UIWebView和AppKit 中的WebView,提供了统一的跨双平台 API。
自诩拥有60fps滚动刷新率、内置手势、高效的app和web信息交换通道、和 Safari相同的JavaScript引擎,所以必须学习一下
初始化
initWithFrame:configuration:
1 | init(frame frame: CGRect, |
1 | - (instancetype)initWithFrame:(CGRect)frame |
1 | @property(nonatomic, readonly, copy) WKWebViewConfiguration *configuration |
- scrollview: 滚动视图(只读)
1 | var scrollView: UIScrollView { get } |
1 | @property(nonatomic, readonly, strong) UIScrollView *scrollView |
- title:页面的标题(只读))
1 | var title: String? { get } |
1 | @property(nonatomic, readonly, copy) NSString *title |
- URL:当前页面的URL(只读)
1 | var URL: NSURL? { get } |
1 | @property(nonatomic, readonly, copy) NSURL *URL |
- customUserAgent:用户设置的代理信息,没有为nil(9.0 and later)
1 | var customUserAgent: String? |
1 | @property(nonatomic, copy) NSString *customUserAgent |
- ertificateChain:当前已提交的导航的证书链的对象数组。(只读)(9.0 and later)
1 | var certificateChain: [AnyObject] { get } |
1 | @property(nonatomic, readonly, copy) NSArray *certificateChain |
- navigationDelegate:浏览器导航代理
1 | weak var navigationDelegate: WKNavigationDelegate? |
1 | @property(nonatomic, weak) id< WKNavigationDelegate > navigationDelegate |
- UIDelegate:浏览器用户界面代理
1 | weak var UIDelegate: WKUIDelegate? |
1 | @property(nonatomic, weak) id< WKUIDelegate > UIDelegate |
加载内容
- estimatedProgress:加载的进度值,从0到1
1 | var estimatedProgress: Double { get } |
1 | @property(nonatomic, readonly) double estimatedProgress |
- hasOnlySecureContent:是否安全加密加载页面(只读)
1 | var hasOnlySecureContent: Bool { get } |
1 | @property(nonatomic, readonly) BOOL hasOnlySecureContent |
- 加载HTML字符串
1 | func loadHTMLString(_ string: String, |
1 | - (WKNavigation *)loadHTMLString:(NSString *)string |
Parameters
string HTML内容字符串
baseURL:解析HTML内容字符串里面的网址
- loading:是否正在加载中(只读)
1 | var loading: Bool { get } |
1 | @property(nonatomic, readonly, getter=isLoading) BOOL loading |
- reload:重新加载页面方法
1 | func reload() -> WKNavigation? |
1 | - (WKNavigation *)reload |
- reloadFromOrigin重新载入当前页面,进行端到端的验证使用缓存验证条件
1 | func reloadFromOrigin() -> WKNavigation? |
1 | - (WKNavigation *)reloadFromOrigin |
- stopLoading在当前页面停止所有的加载
1 | func stopLoading() |
1 | - (void)stopLoading |
- loadData:MIMEType:characterEncodingName:baseURL:加载数据
1 | func loadData(_ data: NSData, |
1 | - (WKNavigation *)loadData:(NSData *)data |
data: 网页转换的数据
MIMEType
{
application/msexcel
application/mshelp
application/mspowerpoint
application/msword
application/octet-stream
application/pdf
application/post
application/rtf
application/x-httpd-php
}
characterEncodingName :编码类型
baseURL:用于解析文档中的相对网址的网址。
- loadFileURL:allowingReadAccessToURL:加载导航到所请求的文件系统上的文件的URL
1 | func loadFileURL(_ URL: NSURL, |
1 | (WKNavigation *)loadFileURL:(NSURL *)URL |
readAccessURL如果是一个文件,直接加载,如果是一个目录,加载里面的文件
Navigating导航
- allowsBackForwardNavigationGestures是否允许水平滑动前进后退页面。默认是NO
1 | var allowsBackForwardNavigationGestures: Bool |
1 | allowsBackForwardNavigationGestures |
- backForwardList历史记录
1 | ar backForwardList: WKBackForwardList { get } |
1 | @property(nonatomic, readonly, strong) WKBackForwardList *backForwardList |
- canGoBack:是否后退到历史记录的一项(只读)
1 | var canGoBack: Bool { get } |
1 | @property(nonatomic, readonly) BOOL canGoBack |
- canGoForward:是否前进到历史记录的某一项(只读)
1 | var canGoForward: Bool { get } |
1 | @property(nonatomic, readonly) BOOL canGoForward |
- allowsLinkPreview:是否支持链接预览,支持3DTouch查看等
1 | var allowsLinkPreview: Bool |
1 | @property(nonatomic) BOOL allowsLinkPreview |
- goBack:回到后一页
1 | func goBack() -> WKNavigation? |
1 | - (WKNavigation *)goBack |
- oForward:前进一页
1 | func goForward() -> WKNavigation? |
1 | - (WKNavigation *)goForward |
- goToBackForwardListItem:导航到一个新的项目(从后向前),并设置为当前项目
1 | func goToBackForwardListItem(_ item: WKBackForwardListItem) -> WKNavigation? |
1 | - (WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item |
- loadRequest:加载URL的请求
1 | func loadRequest(_ request: NSURLRequest) -> WKNavigation? |
1 | - (WKNavigation *)loadRequest:(NSURLRequest *)request |
- 执行JavaScript语言
1 | func evaluateJavaScript(_ javaScriptString: String, |
1 | - (void)evaluateJavaScript:(NSString *)javaScriptString |
completionHandler:执行后的block回调