美文网首页
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