BaseWebViewController.swift 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // BaseWebViewController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/3/8.
  6. // Copyright © 2019 南鑫林. All rights reserved.
  7. //
  8. import UIKit
  9. import WebKit
  10. class BaseWebViewController: BaseViewController {
  11. override func viewDidLoad() {
  12. super.viewDidLoad()
  13. setupViews()
  14. setupLayouts()
  15. }
  16. override func didReceiveMemoryWarning() {
  17. super.didReceiveMemoryWarning()
  18. // Dispose of any resources that can be recreated.
  19. }
  20. //加载普通URL
  21. var URLString : String?
  22. //加载本地URL
  23. var HTMLName : String?
  24. //加载本地的js
  25. var scriptMessageHandlerArray : Array<Any>?
  26. //POST加载字典
  27. var parameters = [String : Any]()
  28. //MARK: - view
  29. override func setupViews() {
  30. view.addSubview(wkWebView)
  31. }
  32. override func setupLayouts() {
  33. }
  34. //MARK: - action
  35. @objc private func backAction() {
  36. self.wkWebView.webView.stopLoading()
  37. if self.wkWebView.webView.canGoBack {
  38. self.wkWebView.webView.goBack()
  39. }else {
  40. self.navigationController?.popViewController(animated: true)
  41. }
  42. }
  43. //MARK: - lazy
  44. lazy var wkWebView: WebView = {
  45. let wkWebView = WebView.init(frame: CGRect(x: 0, y: kNavBarTotalHeight, width: kScreenWidth, height: kScreenHeight - kNavBarTotalHeight))
  46. wkWebView.delegate = self
  47. wkWebView.webConfig = webConfig
  48. //// 加载普通URL
  49. if (URLString != nil) {
  50. wkWebView.webloadType(self, .URLString(url: URLString!))
  51. }
  52. // 加载本地URL
  53. if (HTMLName != nil && scriptMessageHandlerArray != nil) {
  54. webConfig.scriptMessageHandlerArray = scriptMessageHandlerArray as! [String]
  55. wkWebView.webloadType(self, .HTMLName(name: HTMLName!))
  56. }
  57. // POST加载
  58. if !parameters.isEmpty && URLString != nil {
  59. wkWebView.webloadType(self, .POST(url: URLString!, parameters: parameters))
  60. }
  61. return wkWebView
  62. }()
  63. lazy var webConfig: WKWebViewConfig = {
  64. var webConfig = WKWebViewConfig()
  65. return webConfig
  66. }()
  67. }
  68. extension BaseWebViewController:WKWebViewDelegate{
  69. /// 服务器开始请求的时候调用
  70. func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void){
  71. }
  72. /// 页面开始加载
  73. func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!){
  74. }
  75. /// 页面加载完成
  76. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!){
  77. }
  78. /// 跳转失败的时候调用
  79. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error){
  80. }
  81. /// 内容加载失败
  82. func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error){
  83. }
  84. /// 执行JS注入方法
  85. func webViewUserContentController(_ scriptMessageHandlerArray:[String], didReceive message: WKScriptMessage){
  86. }
  87. /// JS执行回调方法
  88. func webViewEvaluateJavaScript(_ result:Any?,error:Error?){
  89. }
  90. }