webView 的 scalesPageToFit 不适用于 iOS 9.3

scalesPageToFit for webView is not working with iOS 9.3

我在情节提要中有 UIWebview,我正在视图中加载 HTML 页面。 在 iOS 9.2 之前,它工作得很好,但是当我在 iOS 9.3 中与 运行 相同时,页面默认显示为放大。 我已经设置了 scalesPageToFit 属性.

self.webView.scalesPageToFit=TRUE;

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

这是我来自 HTML 的 Meta 标签..

<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">

正如我尝试过的许多 post 中所建议的那样。

[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)self.view.frame.size.width]];
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    //make sure that the page scales when it is loaded :-)
    theWebView.scalesPageToFit = YES;
    return YES;
}

似乎是合适的解决方案

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

    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];

我知道这是一个棘手的解决方法。数字 770 是宽度(点)和比例之间的比率,我需要将网页内容拟合到 webview。

更新

我发现上述解决方案有时会导致特定 html 标签中的字母无法正确缩放,这就是我使用 javascript 的原因,它会直接更改名称视口的元标签(代码如下) )

NSString *js = [NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content','width=device-width; initial-scale=%.2f; user-scalable=no;');",scale];