地址配置
NSString *path = [[NSBundle mainBundle]pathForResource:@"2" ofType:@"html" inDirectory:@"output/"];
NSLog(@"%@",path);
NSURL *url = [NSURL fileURLWithPath:path];
[self.webView loadFileURL:url allowingReadAccessToURL: url];
//创建网页配置对象
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
// 创建设置对象
WKPreferences *preference = [[WKPreferences alloc]init];
[config.preferences setValue:@(YES) forKey:@"allowFileAccessFromFileURLs"];
//最小字体大小 当将javaScriptEnabled属性设置为NO时,可以看到明显的效果
// preference.minimumFontSize = 0;
//设置是否支持javaScript 默认是支持的
preference.javaScriptEnabled = YES;
// // 在iOS上默认为NO,表示是否允许不经过用户交互由javaScript自动打开窗口
// preference.javaScriptCanOpenWindowsAutomatically = YES;
// config.preferences = preference;
// // 是使用h5的视频播放器在线播放, 还是使用原生播放器全屏播放
// config.allowsInlineMediaPlayback = YES;
// //设置视频是否需要用户手动播放 设置为NO则会允许自动播放
// config.requiresUserActionForMediaPlayback = YES;
// //设置是否允许画中画技术 在特定设备上有效
// config.allowsPictureInPictureMediaPlayback = YES;
// //设置请求的User-Agent信息中应用程序名称 iOS9后可用
// config.applicationNameForUserAgent = @"ChinaDailyForiPad";
//自定义的WKScriptMessageHandler 是为了解决内存不释放的问题
WeakWebViewScriptMessageDelegate *weakScriptMessageDelegate = [[WeakWebViewScriptMessageDelegate alloc] initWithDelegate:self];
//这个类主要用来做native与JavaScript的交互管理
// WKUserContentController * wkUController = [[WKUserContentController alloc] init];
// //注册一个name为jsToOcNoPrams的js方法 设置处理接收JS方法的对象
// [wkUController addScriptMessageHandler:weakScriptMessageDelegate name:@"jsToOcNoPrams"];
// [wkUController addScriptMessageHandler:weakScriptMessageDelegate name:@"jsToOcWithPrams"];
// [wkUController addScriptMessageHandler:weakScriptMessageDelegate name:@"jstotest"];
// config.userContentController = wkUController;
//
// //以下代码适配文本大小
// NSString *jSString = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
// //用于进行JavaScript注入
// WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jSString injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
// [config.userContentController addUserScript:wkUScript];
//
_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) configuration:config];
// UI代理
_webView.UIDelegate = self;
// 导航代理
_webView.navigationDelegate = self;
// 是否允许手势左滑返回上一级, 类似导航控制的左滑返回
_webView.allowsBackForwardNavigationGestures = YES;
使用起来 我没有感觉wk 和 UIweb有什么区别,但是看数据,差别还挺大
UIWeb
屏幕快照 2019-07-29 上午11.29.09.png
WkWeb
屏幕快照 2019-07-29 上午11.31.04.png
网友评论