用于webView的scalesPageToFit不适用于iOS 9.3

时间:2016-04-05 12:09:47

标签: ios objective-c iphone uiwebview ios9.3

我在故事板中有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

2 个答案:

答案 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;
}

似乎是合适的解决方案