如何更改 WebView 中的字体大小 (Swift 5)

Ora*_*chi 1 uiwebview webview ios swift

我将文本加载到 WebView。我需要更改字体及其大小。我用的是这个代码,但是字体太小了。这不是15分。我的问题是什么?

private lazy var webView: WKWebView = {
        let contentController = WKUserContentController()
        
        let webConfig = WKWebViewConfiguration()
        webConfig.userContentController = contentController
        webConfig.dataDetectorTypes = [.phoneNumber, .link]
        
        let web = WKWebView(frame: .zero, configuration: webConfig)
        web.navigationDelegate = self
        return web
    }()

    ...
    let fontName =  "PFHandbookPro-Regular"
    let fontSize = 15
    let fontSetting = "<span style=\"font-family: \(fontName);font-size: \(fontSize)\"</span>"
    webView.loadHTMLString(fontSetting + myHTMLString, baseURL: nil)
Run Code Online (Sandbox Code Playgroud)

例子

jn_*_*pdx 6

您拥有的标签span不会真正执行任何操作,因为它会立即打开和关闭 - 它不包含任何内容。

该解决方案的工作原理是假设您的 HTML 字符串尚未包含完整的<head><body>标签:

let header = """
        <head>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
            <style>
                body {
                    font-family: "Avenir";
                    font-size: 24px;
                }
            </style>
        </head>
        <body>
        """
webView.loadHTMLString(header + myHTMLString + "</body>", baseURL: nil)
Run Code Online (Sandbox Code Playgroud)

这样做的第一件重要的事情是设置视口,以便页面具有适合设备的正确比例(这是文本如此小的主要原因)。然后,它还向您展示了如何为 HTML 正文设置字体系列和字体大小。

如果您的 HTML 标记已经具有<head><body>标签,您可能希望通过注入 javascript 来执行相同类型的操作(更改视口和正文样式)。您可以在此处查看有关执行此操作的一些信息:WKWebView相当于UIWebView的scalesPageToFit