在 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)

应用字体后

希望这对您有所帮助