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