我在故事板中有UIWebview,我在视图中加载HTML页面。 直到iOS 9.2它的功能很棒,但是当我在iOS 9.3中运行时,默认情况下会出现放大页面。 我已经设置了scalesPageToFit属性。
<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">
我也试过以编程方式为UIWebview设置框架。
这是我在HTML中的Meta标签..
<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]];
正如我试过的很多帖子所建议的那样。
npm
答案 0 :(得分:3)
我遇到了同样的问题,解决方案是使用此代码
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,它直接使用名称视口更改元标记(代码如下)
NSString *js = [NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content','width=device-width; initial-scale=%.2f; user-scalable=no;');",scale];
答案 1 :(得分:0)
- (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;
}
似乎是合适的解决方案