ios - 用于 webView 的 scalesPageToFit 不适用于 iOS 9.3

标签 ios objective-c iphone uiwebview ios9.3

我在 Storyboard 中有 UIWebview,我正在 View 中加载 HTML 页面。
在 iOS 9.2 之前,它的运行效果很好,但是当我在 iOS 9.3 中运行相同时,默认情况下页面会放大显示。
我设置了 scalesPageToFit 属性。

self.webView.scalesPageToFit=TRUE;

我也尝试过以编程方式为 UIWebview 设置框架。

这是我的 HTML 元标记。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="language" content="en" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.2, user-scalable=yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">

我尝试过使用元标记
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">

正如我尝试过的许多帖子中所建议的那样。
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)self.view.frame.size.width]];

最佳答案

我遇到了同样的问题,解决方案是使用下面的代码

    webview.scalesPageToFit = YES;
    float width = webview.frame.size.width;
    float scale = width/770;

    NSString *js = [NSString stringWithFormat:@"document.body.style.zoom=%.2f;",scale];
    [webview stringByEvaluatingJavaScriptFromString:js];

我知道这是 hacky 解决方法。数字 770 是宽度(点)和比例之间的比率,我需要将网页内容放入 webview 中。

更新

我发现上述解决方案有时会导致无法正确缩放特定 html 标记中的字母,这就是我使用 javascript 的原因,它直接更改带有名称 viewport 的元标记(代码如下)
NSString *js = [NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content','width=device-width; initial-scale=%.2f; user-scalable=no;');",scale];

关于ios - 用于 webView 的 scalesPageToFit 不适用于 iOS 9.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36426007/

相关文章:

android - 如何为移动跨平台网站编写CSS

objective-c - @interface : "expected identifier or {" and "Parse issue: Missing @end" 处的 appdelegate 错误

iPhone UIImageView 捏合缩放

iphone - 保持两个 MKMapView 显示同一区域

iphone - 在 UITableView 的 iOS 文档目录中列出保存的文件?

iphone - 未调用 fbDidLogin - iOS

ios - Segue 动画类似于在 iOS 7 中打开应用程序 : viewcontroller frame is not resizable

ios - 删除后重用的UITableViewCell格式

iphone - 如何判断iphone第一次加载应用?

objective-c - 使用 OpenSSL 从模数和指数初始化公钥