我有一个使用UIViewController在UIWebView中显示文章的应用程序,其中一些有图像。我进行了设置,以便在点击图像时调用
- (void)displayImage:(NSInteger)i {
ImageViewController * imageVC = [[ImageViewController alloc] initWithImageId:i];
[self.navigationController pushViewController:imageVC animated:YES];
[imageVC release];
}
这会加载另一个UIViewController。 我的所有观点都完全适应轮换。 ImageViewController维护图像的比例,我的ArticleViewController用文本填充屏幕。但是,每当我在查看ImageViewController的同时将屏幕旋转到横向模式并按下后退按钮时。以前的UIViewController不正确地自动调整大小,增加了文本的字体大小,而不是在一行上添加更多的单词。
编辑:
这是一篇文章视图控制器:
这是单击图像时出现的ImageViewController:
现在,如果我们改变方向......
然后点击后退按钮,文章内容已经过不当调整以适应窗口。
可以通过转动iPhone两次来解决这个问题。这就是文章在景观中的样子。
问题与UIWebView当前不可见时没有适当自动调整有关。我该怎么做才能解决这个问题?
答案 0 :(得分:5)
您需要在Interface Builder 中执行此操作。
单击您的UIWebView并按Apple-3以拉出“Size Inspector”。
在“自动调整大小”下,确保选中内的两个箭头。这将确保视图大小始终最大化到其容器。
答案 1 :(得分:1)
您可以通过根据设备方向添加不同的CSS样式在服务器端更改它: 例如:
/* Landscape */
@media screen and (min-width: 321px)
{
body{
width: 320px;
}
}
/* Landscape */
@media screen and (min-width: 321px)
{
body{
width: 480px;
}
}
或者您可以从客户端更改视口: 如果您的网页有视口元标记:
<meta name="viewport" id="view" content="width=320px, minimum-scale=1.0, maximum-scale=1.0">
然后在您的代码中,您可以在每次方向更改时更改此视口:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if(interfaceOrientation == UIDeviceOrientationLandscapeLeft)
[uiwebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"view\").setAttribute('content', 'width=480');"]];
}
....
并在方向为人像时再次更改
答案 2 :(得分:1)
供将来参考。您可以使用此编程方式执行此操作。
[webView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];