Ios 从头开始创建自定义webview

Ios 从头开始创建自定义webview,ios,Ios,我所处的情况是,我希望webview比UIWebview提供的更大的灵活性,而不是WKWebview提供的灵活性。比如在开始之前定制web请求,比如发送头和重定向。正如我们所知,iOS 12中的UIWebview现在已被正式弃用 我现在期待着一个通用的webview,我知道它可能是开源的,比如FirefoxforiOS。 如果你一直在使用你的任何项目或知道,请告诉我。或者,如果您能给我一些信息,如何实现这一点,或者任何教程链接都会有所帮助。声明WebView对象 var webView: WKW

我所处的情况是,我希望webview比UIWebview提供的更大的灵活性,而不是WKWebview提供的灵活性。比如在开始之前定制web请求,比如发送头和重定向。正如我们所知,iOS 12中的UIWebview现在已被正式弃用

我现在期待着一个通用的webview,我知道它可能是开源的,比如FirefoxforiOS。
如果你一直在使用你的任何项目或知道,请告诉我。或者,如果您能给我一些信息,如何实现这一点,或者任何教程链接都会有所帮助。

声明WebView对象

var webView: WKWebView!
//在webView中加载数据

func loadUrl() {

    var webView : WKWebView!
    let script: WKUserScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
    let userContentController: WKUserContentController = WKUserContentController()
    let configuration = WKWebViewConfiguration()
    configuration.userContentController = userContentController
    userContentController.addUserScript(script)
    webView = WKWebView(frame: CGRect.zero, configuration: configuration)
    webView.uiDelegate = self
    webView.navigationDelegate = self
    webView.allowsLinkPreview = true

    //Load the Data from URL
    let url = URL(string: "Your URL")
    var urlRequest = URLRequest(url: url! as URL)
    urlRequest.setValue("application/json", forHTTPHeaderField: "Accept")
    urlRequest.setValue("user-agent", forHTTPHeaderField: "User-Agent")

    webView.load(urlRequest)


    //Load the Data from local HTML

    do {
        guard let filePath = Bundle.main.path(forResource: "Your-HTML-File", ofType: "html")
            else {
                print ("FILE READING ERROR")
                return
        }
        //get the content of HTML File
        let contents =  try String(contentsOfFile: filePath , encoding: .utf8)
        webView.loadHTMLString(contents, baseURL:URL(fileURLWithPath: Bundle.main.bundlePath))
    }
    catch {
        print ("FILE HTML ERROR")
    }
}
//webView完成加载时调用的委托方法。 //您可以在此处应用css或样式

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {        
        ///Local CSS File
        guard let path = Bundle.main.path(forResource: "Local-CSS-File", ofType: "css") else { return }
        let script = "var head = document.getElementsByTagName('head')[0];var link = document.createElement('link');link.rel = 'stylesheet';link.type = 'text/css';link.href = '\(path)';link.media = 'all';head.appendChild(link);"
        webView.evaluateJavaScript(script) {(result, error) in
            if let error = error {
                print(error)
            }
        }

        //External CSS File
        let externalCSSLink = "your-css-file-url"
        let script2 = "var head = document.getElementsByTagName('head')[0];var link = document.createElement('link');link.rel = 'stylesheet';link.type = 'text/css';link.href = '\(externalCSSLink)';link.media = 'all';head.appendChild(link);"
        webView.evaluateJavaScript(jsString1) {(result, error) in
            if let error = error {
                print(error)
            }
        }
    }

投票以主题外的方式关闭,但使用除苹果提供的web渲染引擎以外的任何web渲染引擎都会导致应用商店拒绝您的应用。阅读开发者协议了解更多信息。您好,谢谢您提供的信息,所以绝对没有办法在iOS中构建您自己的web视图?通过URLConnection可以实现这一点吗?苹果公司明确禁止这样做。这就是为什么Chrome等都使用WKWebView或UIWebView的原因。好吧,我会为此悬赏并做一些研究,我可能需要把它作为我的副业来做。请参阅苹果的,特别是第2.5.6节。我向你保证,你不是第一个被这项政策深深困扰的人。