objective-c - WKWebView - 放大后内容不合适
问题描述
我WKWebView
在设置放大属性时遇到问题。
我希望内容能够像在 Safari 中一样调整大小以适应它。但我无法做到这一点。将放大倍率设置为小于 1.0 的值时如下所示。
多余的空间没有被使用,并且出现了边距。在 Safari 中,缩小会导致文本和图像变小,但实际上会使用额外的空间。
我正在使用带有 XIB 文件的 InterfaceBuild 来连接视图。
另外,我在viewDidLoad
.
webView.allowsMagnification = YES;
我也尝试了以下但没有成功:
webView.translatesAutoresizingMaskIntoConstraints = NO;
webView.autoresizesSubviews = NO;
webView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
任何提示将不胜感激。
解决方案
问题是WKWebView
的 magnification 属性并不像你认为的那样。它的作用是将渲染的页面作为一个整体进行缩放(考虑获取位图或图像并调整其大小)。
您想要的是 Safari(和其他浏览器)具有的动态缩放功能,通常称为“缩放”。这与 不同magnification
,因为它会缩放页面的布局。这会单独放大或缩小页面的字体大小、元素大小等。
没有像 Safari 那样缩放页面的本地(公共)API,但您可以通过利用 CSSzoom
属性来做几乎相同的事情。这是一个可以做到这一点的扩展:
extension WKWebView {
func zoom(to zoomAmount: CGFloat) {
evaluateJavaScript("document.body.style.zoom = '\(zoomAmount)'", completionHandler: nil)
}
}
它可以这样使用:
webView.zoom(to: 0.9)
推荐阅读
- java - 没有为 BeforeAll 方法中的参数注册 ParameterResolver
- excel - VBA下拉菜单不断崩溃
- python - Tensorflow 中的 `tf.function` 和 `autograph.to_graph` 有什么关系?
- html - Angular / Bootstrap 4:多行多张卡片
- ms-access - 如何编写查询以获得我想要的结果?
- azure - 在 Azure Powershell 函数中使用 Azure CLI
- twig - Twig 在内部使用 htmlspecialchars 进行转义。我如何通过 ENT_NOQUOTES?
- git - 带有 git 哈希对象的 git ls-tree
- javascript - 无法安装 npm 包 - bcrypt@3.0.6 install: `node-pre-gyp install --fallback-to-build` in Ubuntu 18.04
- python-3.x - 如何在此 html 代码中使用 BeautifulSoup 获取文本:c#