张国伟 发表于 2024-7-10 00:53:27

iOS开发-WKWebView的先容与根本使用

WKWebView 是 iOS 开发中用于表现网页内容的组件,它是在 iOS 8 中引入的,作为 UIWebView 的替换品。WKWebView 提供了更高的性能和更多的功能,它是基于 WebKit 引擎的,这也是 Safari 欣赏器所使用的引擎。
主要特性


[*]性能提升:相比于老旧的 UIWebView,WKWebView 在性能上有显著提升,包括更快的JavaScript执行和更流畅的页面渲染。
[*]独立的进程:WKWebView 在独立的进程中运行,这意味着纵然网页内容瓦解,也不会影响到应用步调的其他部分。
[*]当代化的API:提供了一套当代化的API,允许开发者与网页内容举行更深条理的交互。
[*]安全性:默认禁用了跨站点跟踪,并支持内容安全计谋(CSP)。
使用 WKWebView

要在应用中使用 WKWebView,首先必要导入 WebKit 框架:
#import <WebKit/WebKit.h>然后,可以创建一个 WKWebView 实例并添加到视图中:
WKWebViewConfiguration *configuration = [ init];
WKWebView *webView = [ initWithFrame:self.view.frame configuration:configuration];
;加载网页非常简朴,可以使用一个 NSURLRequest 来加载一个网页:
NSURL *url = ;
NSURLRequest *request = ;
;与网页内容交互

WKWebView 提供了 WKScriptMessageHandler 协议,允许原生代码与网页中的JavaScript相互通信。可以注入JavaScript代码并捕获其执行结果,或者让网页调用原生代码。
// 添加一个名为 "appModel" 的脚本消息处理器
;

// 实现 WKScriptMessageHandler 协议的方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if () {
      // 处理从网页接收到的消息
      NSLog(@"JavaScript is sending a message: %@", message.body);
    }
}导航署理和 UI 署理

WKWebView 提供了两个署理协议:WKNavigationDelegate 和 WKUIDelegate。这些署理协议允许追踪网页加载的进度、处置惩罚网页加载过程中的各种事件、以及自定义网页中的某些UI元素,如弹出框。
webView.navigationDelegate = self;
webView.UIDelegate = self;

// 实现 WKNavigationDelegate 协议的方法来追踪加载进度
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    NSLog(@"网页加载完成");
}

// 实现 WKUIDelegate 协议的方法来自定义UI元素
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
    // 显示一个自定义的弹出框
    completionHandler();
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: iOS开发-WKWebView的先容与根本使用