html - 使用 Swift 4 滚动 WKWebview
问题描述
我有一个WKWebview
正确显示来自本地网络文件的 html 内容。html 比屏幕宽得多,我需要启用水平滚动。这可能只WKWebview
需要 还是我需要制作WKWebview
a 的子视图UIScrollView
?
解决方案
添加Javascript
以根据设备修复屏幕宽度和高度。
使用此代码:
NSString *js = @"var metaTag=document.createElement('meta');"
"metaTag.name = \"viewport\";"
"metaTag.content = \"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\";"
"document.getElementsByTagName('head')[0].appendChild(metaTag);";
WKUserScript *script = [[WKUserScript alloc] initWithSource:js injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
[_WebView.configuration.userContentController addUserScript:script];
在斯威夫特
let js = """
var metaTag=document.createElement('meta');\
metaTag.name = "viewport";\
metaTag.content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0";\
document.getElementsByTagName('head')[0].appendChild(metaTag);
"""
let script = WKUserScript(source: js, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
self.webView.configuration.userContentController.addUserScript(script)
推荐阅读
- flutter - 无法在 Flutter 中的 PageController 上跳转到页面
- ios - Swift 重复 While 循环最佳实践
- python-3.x - 使用 datetime.strptime() 将字符串转换为日期时间时出错
- reactjs - 在一些 reactjs 逻辑上需要一些帮助
- android - Android 11/R - 使用从后台启动的前台服务开始录制音频/视频(警报接收器)
- tensorflow - 在 GCP 上的 Ubuntu 16.04 实例上运行使用 tensorflow 的烧瓶应用程序,模型运行但预测与本地主机上的不同
- c++ - 为什么这个 C++ 程序没有显示任何输出?
- html - 移动设备上的用户输入和占位符文本对齐
- laravel - 指令名称 [] 无效。指令名称只能包含字母数字字符和下划线
- c# - 从 xml 继承/实现 List/ICollection/等反序列化类型