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];
我在情节提要中有 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];