在 ios 中从 Webview 更改字体
Change font from Webview in ios
我的应用通过 Url 而非 html 字符串加载 WebView。
我尝试了几种更改字体的选项,但没有用。
我在下面使用这种方法。
请提供一些帮助,抱歉我的英语不好!
NSString *fontFamilyStr = @"document.getElementsByTagName('body')[0].style.fontFamily='PingFangSC-Light';";
[webView stringByEvaluatingJavaScriptFromString:fontFamilyStr];
在加载到 webView 之前,只需在您的字符串前添加一个 <font face>
标记。
NSString *body = [plist objectForKey:@"foo"];
NSString *htmlString =
[NSString stringWithFormat:@"<font face='PingFangSC-Light' size='3'>%@", body];
[webView loadHTMLString:htmlString baseURL:nil];
让我们尝试 it.It 适合我。希望它能帮助你。
let styles = "<html><head>"
+ "<style type=\"text/css\">body{font-size:20px;font-family:Helvetica;}"
+ "</style></head>"
+ "<body>" + "</body></html>"
self. webView.loadHTMLString(styles, baseURL: nil)
我不太确定你想在代码中的什么地方调用 stringByEvaluatingJavaScriptFromString
,你应该在 webView 完成加载后调用它,因为你正在尝试修改 UI HTML 页面(通过更改字体)如果您尝试 运行 您的 JavaScript 命令甚至在网页完成加载之前,尽管您的 javaScript 代码 运行s,它将无法修改其组件的属性,因为它们可能尚未完成渲染。
因此,
第 1 步:
让你的 ViewController 成为你的 webView
的 navigationDelegate
webView.navigationDelegate = self
第 2 步:
为您的 ViewController 添加扩展并确认 WKNavigationDelegate
extension ViewController : WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let changeFontFamilyScript = "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";"
webView.evaluateJavaScript(changeFontFamilyScript) { (response, error) in
debugPrint("Am here")
}
}
}
第 3 步:
注意在 "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";"
中使用 '\' 来转义特殊字符,如 singleQuote (') 和 doubleQuotes ("),您在上面的代码中缺少这些字符
第 4 步:
如果您的网页找不到指定的 FontFamily(查看我指定的 3 个字体名称,Impact、Charcoal、sans-serif),请确保您提供正确的 FontaFamilies 和回退选项
O/P
没有 NavigationDelegate(没有 运行ning javaScript)
应用字体后
希望这对您有所帮助
我的应用通过 Url 而非 html 字符串加载 WebView。 我尝试了几种更改字体的选项,但没有用。 我在下面使用这种方法。 请提供一些帮助,抱歉我的英语不好!
NSString *fontFamilyStr = @"document.getElementsByTagName('body')[0].style.fontFamily='PingFangSC-Light';";
[webView stringByEvaluatingJavaScriptFromString:fontFamilyStr];
在加载到 webView 之前,只需在您的字符串前添加一个 <font face>
标记。
NSString *body = [plist objectForKey:@"foo"];
NSString *htmlString =
[NSString stringWithFormat:@"<font face='PingFangSC-Light' size='3'>%@", body];
[webView loadHTMLString:htmlString baseURL:nil];
让我们尝试 it.It 适合我。希望它能帮助你。
let styles = "<html><head>"
+ "<style type=\"text/css\">body{font-size:20px;font-family:Helvetica;}"
+ "</style></head>"
+ "<body>" + "</body></html>"
self. webView.loadHTMLString(styles, baseURL: nil)
我不太确定你想在代码中的什么地方调用 stringByEvaluatingJavaScriptFromString
,你应该在 webView 完成加载后调用它,因为你正在尝试修改 UI HTML 页面(通过更改字体)如果您尝试 运行 您的 JavaScript 命令甚至在网页完成加载之前,尽管您的 javaScript 代码 运行s,它将无法修改其组件的属性,因为它们可能尚未完成渲染。
因此,
第 1 步:
让你的 ViewController 成为你的 webView
navigationDelegate
webView.navigationDelegate = self
第 2 步:
为您的 ViewController 添加扩展并确认 WKNavigationDelegate
extension ViewController : WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let changeFontFamilyScript = "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";"
webView.evaluateJavaScript(changeFontFamilyScript) { (response, error) in
debugPrint("Am here")
}
}
}
第 3 步:
注意在 "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";"
中使用 '\' 来转义特殊字符,如 singleQuote (') 和 doubleQuotes ("),您在上面的代码中缺少这些字符
第 4 步:
如果您的网页找不到指定的 FontFamily(查看我指定的 3 个字体名称,Impact、Charcoal、sans-serif),请确保您提供正确的 FontaFamilies 和回退选项
O/P
没有 NavigationDelegate(没有 运行ning javaScript)
应用字体后
希望这对您有所帮助