美文网首页
WKWebViewConfiguration

WKWebViewConfiguration

作者: 维若 | 来源:发表于2019-07-26 14:37 被阅读0次

地址配置

   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

相关文章

网友评论

      本文标题:WKWebViewConfiguration

      本文链接:https://www.haomeiwen.com/subject/umzrrctx.html