WKWebView是Webkit框架中提供的类。WKWebView与之前的UIWebView相比做了很多的功能提升,主要体现在以下几个方面。
在性能、稳定性、功能方面有很大提升,减少了加载网页时占用的内存。
更好地支持HTML5的特性。
高达60fps的滚动刷新率以及内置手势。
允许JavaScript的Nitro库加载并使用。
将UIWebViewDelegate与UIWebView重构成了14类与3个协议。
WKWebView常用属性
// 网页标题
@property(nullable, nonatomic, readonly, copy) NSString *title;
// 网页的URL
@property(nullable, nonatomic, readonly, copy) NSURL *URL;
// 网页是否在加载中
@property(nonatomic, readonly, getter=isLoading) BOOL loading;
// 是否可以回退
@property(nonatomic, readonly) BOOL canGoBack;
// 是否可以前进
@property(nonatomic, readonly) BOOL canGoForward;
// 标识是否支持左、右滑动手势来进行网页后退、前进。
@property(nonatomic) BOOL allowsBackForwardNavigationGesture;
// 与WKWebView相关联的scrollView。
@property(nonatomic, readonly, strong) UIScrollView *scrollView;
// UI代理属性,用于响应用户交互。
@property(nonatomic, readonly, weak) id <WKUIDelegate> UIDelegate;
.WKWebView常用方法
// WKWebView初始化方法。
-(instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuretion NS_DESIGNATED_INITIALIZER;
// 通过URL加载网页视图。
-(nullable WKNavigation *)loadRequest:(NSURLRequest *)request;
// 执行网页后退
-(nullable WKNavigation *)goBack;
// 执行网页前进
-(nullable WKNavigation *)goForward;
// 执行网页刷新
-(nullable WKNavigation *)reload;
// 停止加载
-(void)stopLoading
// 执行JavaScript代码
-(void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError *_Nullable error))completionHandler;
2 WKWebView的基本使用——加载网页
-(void)viewDidLoad {
[super viewDidLoad];
// 实例化
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
// 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"www.csdn.com"]];
// 加载网页
[webView loadRequest:request];
[self.view addSubView:webView];
}
3 网页浏览控制
4 加载本地文件
WKWebView除了能够加载网页之外,还能够加载多种类型的文件,支持的格式涵盖了pdf、word、txt、图片等。加载文件需要使用到loadFileURL:allowingReadAccessToURL:方法
-(nullable WKNavigation *)LoadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL;
//
-(void)viewDidLoad {
[super viewDidLoad];
// 实例化
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.width)];
// 创建url
NSURL *url = [NSURL fileURLWithPath:@"/Users/username/Desktop/html"];
// 加载文件
[webView loadFileURL:url allowingReadAccessToURL:url];
//
[self.view addSubView:webView];
}
5 WKWebView代理协议之WKNavigationDelegate
// 页面开始加载时调用。
-(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation;
// 开始获取到网页内容时调用。
-(void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation;
// 页面加载完成之后调用。
-(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation;