以模态视图形式呈现的UIWebview在横屏模式下显示为竖屏。

4

我浏览了大部分的问题并尝试了几乎所有方法。但不好的是问题依旧存在。

我有一个UIVIew,它总是在横向模式下启动,然后我呈现第二个视图 (detailView) 作为全屏模态视图。

detailview 上面有一个 UIwebview

当我把 detailView 呈现为模态视图时,webview 将以纵向模式显示。

我在 shouldAutoRotateToInterfaceOrientation 中返回"YES",同时设置了 autoresize, autoresizingMaskscalePageToFit 属性。

当我旋转设备时,并且当 detailView 在前台时,webview 会正确地调整到横向模式。

问题只出现在第一次呈现 modalView 时。

旋转设备可以正确地调整布局。


我也尝试在模态视图的viewWillAppear中设置状态栏,即[[UIApplication sharedApplication] setStatusBarOrientation:self.interfaceOrientation]...但是这也不起作用。 - Kiran Kulkarni
尝试这个 - 创建一个自定义视图控制器(比如FirstViewController),其类为UIViewController。在此VC中,支持两种方向(纵向和横向)。然后创建SecondViewController,它将是FirstViewController的子类,显然您将创建一个具有横向模式的UIView,并继续执行与之前相同的操作。 - Nayan
1
术语“横屏”或“竖屏”模式与UIViewController有关,而与UIView无关。因此,您能否澄清一下您在UIWebView的竖屏模式下指的是什么?您使用哪种方法将UIWebView显示在detailview之上? - onegray
4个回答

3
据我所知,iPhone上的ModalViews不支持横屏视图。对于iPhone 5情况可能不同。
但是听起来你设置的是ModalView而不是WebView为横向,我建议采用其他方法来处理这个问题。
例如,您可以像ModalView一样动画显示DetailView,以便它以正确的方向开始。

1
如果您的应用程序在iOS 6上运行,您需要在模态视图控制器中添加以下代码以支持横向方向:
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (BOOL) shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft;
}

此外,请确保您在实际设备上进行测试,而不是模拟器上进行测试,因为自动旋转在模拟器上的行为与实际设备上的行为不同。

0
那就可以了。
CGAffineTransform transform = CGAffineTransformIdentity;
webView.transform = CGAffineTransformRotate(transform,-M_PI/2);

-1

好的。首先,我发布的问题不够清晰。我的问题是,当我在纵向加载webview时,它以横向模式(CSS)加载webview元素,并在横向方向上以纵向模式(CSS)加载。

结果发现我没有应用正确的CSS样式。

我所做的修复是: 在ViewDidLoad和willAnimateRotation方法中,我向我的JavaScript发布通知,根据方向更新样式 :)


你能展示一下这个代码吗?我遇到了同样的问题,但是对于JavaScript一窍不通。 - iOSProgrammingIsFun
@iOSProgrammingIsFun 你能否详细说明你的问题?我之前做过这件事,我需要搜索我的代码。 - Kiran Kulkarni
好的,我有一个视图控制器A,它以全屏样式模态呈现视图控制器B。在VC B内部是一个全屏UIWebView。该Web视图用于显示特定网站-比如维基百科。如果应用程序在纵向运行,则网页将被格式化为纵向,并缩放以适合Web视图-即使在接口生成器中未选中scalestofit。如果在移动Safari中打开相同的页面,则页面的宽度超过屏幕的宽度,并且更易读,还可以进行缩放,而VC B中的Web视图则不行。此外,如果旋转VC B,则页面会混乱。 - iOSProgrammingIsFun
使其部分滚动到物理屏幕的顶部,并且无法向下滚动。在代码中没有为不同方向应用额外的格式更改。此外,网页仍然只适合物理屏幕的宽度,而不是更宽(就像在移动Safari中一样)。 - iOSProgrammingIsFun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接