gpt4 book ai didi

ios - WKWebView:无法更改字体大小

转载 作者:搜寻专家 更新时间:2023-10-31 21:58:52 29 4
gpt4 key购买 nike

问题:

我正在尝试调整显示在 WKWebView 中的文本/内容的大小。内容本身是从远程源加载的(通过 loadHTMLString),因此我无法更改 css。

我已经尝试了我能找到的关于堆栈溢出的大多数其他解决方案(例如 https://stackoverflow.com/a/43694902/1673377 ),但似乎都不起作用。

一些背景:

Xcode 9.2、Swift 4、iOS 10/11。

为了监控内容大小,我使用了从这里获取的代码:https://stackoverflow.com/a/41511422/1673377

lazy var webView: WKWebView = {
//Javascript string
let source = "window.onload=function () {window.webkit.messageHandlers.sizeNotification.postMessage({justLoaded:true,height: document.body.scrollHeight});};"
let source2 = "document.body.addEventListener( 'resize', incrementCounter); function incrementCounter() {window.webkit.messageHandlers.sizeNotification.postMessage({height: document.body.scrollHeight});};"

//UserScript object
let script = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)

let script2 = WKUserScript(source: source2, injectionTime: .atDocumentEnd, forMainFrameOnly: true)

//Content Controller object
let controller = WKUserContentController()

//Add script to controller
controller.addUserScript(script)
controller.addUserScript(script2)

//Add message handler reference
controller.add(self, name: "sizeNotification")

//Create configuration
let configuration = WKWebViewConfiguration()
configuration.userContentController = controller

return WKWebView(frame: CGRect.zero, configuration: configuration)
}()

为了禁用缩放,我还评估了以下 JavaScript:

"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);"

(我尝试调整 initial-scalemaximum-scale 的值,但无济于事。)


如有任何帮助,我们将不胜感激!

最佳答案

基本目标

如果你想改变字体大小,你不知何故需要 CSS。因此,您的目标应该是在 html header 中的某处注入(inject)以下两行:

<link rel='stylesheet' href='style.css' type='text/css'>
<meta name='viewport' content='initial-scale=1.0'/> // This may help with scale

如果您将 style.css 文件添加到您的项目,它现在应该得到尊重。

实际实现

我不知道你从服务器接收到的 html 是如何配置的,但你可以在将它加载到 WKWebView 之前尝试像这样操作它:

let customHeader = <link rel='stylesheet' href='style.css' type='text/css'><meta name='viewport' content='initial-scale=1.0'/>
let newHtml = serverHtml.replacingOccurrences(of: "<head>", with: "<head>" + customHeader)

关于ios - WKWebView:无法更改字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49153541/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com