如何更改 WKWebView 文本颜色?
How to change WKWebView text color?
我有一个 ViewController
和 WKWebView
,我加载了我的 .html
和 .css
文件,其中包含 webView
的文本。它看起来像 Apple Books 应用程序中阅读书籍的控制器。
do {
guard let filePath = Bundle.main.path(forResource: "index", ofType: "html")
else {
print ("File reading error")
return
}
let headerString = "<meta name=\"viewport\" content=\"initial-scale=1.1\" />"
let content = try String(contentsOfFile: filePath, encoding: .utf8)
let baseUrl = URL(fileURLWithPath: filePath)
webView.loadHTMLString(headerString+content, baseURL: baseUrl)
}
catch {
print ("File HTML error")
}
另外,我有 4 个主题可以改变我 ViewController
的外观(白色、黑色、海军蓝和黄色,就像在 Apple Books 中一样)。我想在更改主题时更改 webView
中的文本颜色。怎么做?如何更改 webView
的颜色?
在您的 .html 文件中,您需要编写 JavaScript 函数(例如:changeColor)为您的 HTML 改变颜色元素。当您在 ViewController 中更改主题时,您需要使用 JavaScript 函数名称执行 callAsyncJavaScript 函数。
let web = WKWebView()
web.callAsyncJavaScript("javaScriptFumction", in: WKContentWorld)
WKWebView 具有 callAsyncJavaScript 函数的异步实现。
我有一个 ViewController
和 WKWebView
,我加载了我的 .html
和 .css
文件,其中包含 webView
的文本。它看起来像 Apple Books 应用程序中阅读书籍的控制器。
do {
guard let filePath = Bundle.main.path(forResource: "index", ofType: "html")
else {
print ("File reading error")
return
}
let headerString = "<meta name=\"viewport\" content=\"initial-scale=1.1\" />"
let content = try String(contentsOfFile: filePath, encoding: .utf8)
let baseUrl = URL(fileURLWithPath: filePath)
webView.loadHTMLString(headerString+content, baseURL: baseUrl)
}
catch {
print ("File HTML error")
}
另外,我有 4 个主题可以改变我 ViewController
的外观(白色、黑色、海军蓝和黄色,就像在 Apple Books 中一样)。我想在更改主题时更改 webView
中的文本颜色。怎么做?如何更改 webView
的颜色?
在您的 .html 文件中,您需要编写 JavaScript 函数(例如:changeColor)为您的 HTML 改变颜色元素。当您在 ViewController 中更改主题时,您需要使用 JavaScript 函数名称执行 callAsyncJavaScript 函数。
let web = WKWebView()
web.callAsyncJavaScript("javaScriptFumction", in: WKContentWorld)
WKWebView 具有 callAsyncJavaScript 函数的异步实现。