我遇到了UIWebView自动旋转的问题
网络视图结构不错,但内容不是。
你可以在底部的截图中看到有一个黑色边缘,我知道它是webview,因为我可以在滚动时看到滚动条。
视图控制器具有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
webview具有完全自动调整大小的掩码,视图会自动调整子视图的大小。
我尝试了一堆来自stackoverflow和谷歌的技巧,但没有一个能奏效 这种情况只发生在一些网站上,但如果我在移动版Safari甚至ios opera浏览器中打开有问题的网站,它会正确旋转。
编辑:有问题网站的示例: http://m.calcalist.co.il
webview在界面构建器中设置并使用以下代码加载:
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.calcalist.co.il"]]];
scalesPageToFit = YES; // doesn't help
谢谢!
答案 0 :(得分:3)
在willAnimateRotationToInterfaceOrientation
中设置框架,然后设置元标记。
您也可以设置UIWebView
的此属性:
webView.autoResizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
答案 1 :(得分:2)
您可以将网络视图的scalesPageToFit
属性设置为YES
。
如果您自己生成HTML,则还可以设置viewport
元标记。
如果页面已经设置了视口,您可以将viewcontroller设置为Web视图的委托,并将其更改为:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *javaScript = @"var metatags = document.getElementsByTagName('meta'); \
for(cnt = 0; cnt < metatags.length; cnt++) { \
var element = metatags[cnt]; \
if(element.getAttribute('name') == 'viewport') { \
element.setAttribute('content','width = device-width; user-scalable = yes'); \
} \
}";
[webView stringByEvaluatingJavaScriptFromString:javaScript];
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if ([self interfaceOrientation] == UIInterfaceOrientationPortrait)
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 1.0;"];
else
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 1.5;"];
}