模式视图中的 UIWebview 在横向模式下以纵向显示
Posted
技术标签:
【中文标题】模式视图中的 UIWebview 在横向模式下以纵向显示【英文标题】:UIWebview in a modal view is being shown in portrait in Landscape mode 【发布时间】:2012-10-02 02:43:38 【问题描述】:我浏览了大部分问题并尝试了几乎所有方法。但不好的部分是问题仍然存在。
我有一个UIVIew
,它始终以横向模式启动,我将第二个视图 (detailView
) 呈现为全屏模式视图。
detailview
顶部有一个UIwebview
。
当我将detailView
呈现为模态视图时,webview 以纵向模式显示。
我在shouldAutoRotateToInterfaceOrientation
中返回“YES
”并且还设置了autoresize
、autoresizingMask
和scalePageToFit
属性。
当我旋转设备时,当detailView
在前面时,webview 会正确排列为横向。
问题仅出现在我第一次展示modalView
时。
旋转设备正在正确调整布局。
【问题讨论】:
我也尝试在模态视图的 viewWillAppear 中设置状态栏,即 [[UIApplication sharedApplication] setStatusBarOrientation: self.interfaceOrientation]... 即使这样也行不通 :试试这个 - 创建一个 UIViewController 类的自定义 viewController(比如 - FirstViewController)。在这个 VC 中,支持两个方向(端口和陆地)。然后创建 SecondViewController ,它将是 FirstViewController 的子类,显然在此您将创建具有横向模式的 UIView 并进一步执行与您所做的相同的操作。 终端landscape
或portrait
模式与UIViewController
相关,但与UIView
无关。那么你能澄清一下UIWebView
的纵向模式下你的意思吗?您使用哪种方法在detailview
之上显示UIWebView
?
【参考方案1】:
据我所知,iPhone 上的 ModalViews 不支持横向视图。 iPhone 5 的情况可能有所不同。
但听起来您将 ModalView 而不是 WebView 设置为横向,我建议采用不同的方法来处理此问题。
例如,您可以像 ModalView 一样为 DetailView 设置动画,使其以正确的方向开始
【讨论】:
【参考方案2】:如果您在 ios 6 上运行您的应用,您将需要在模态视图控制器中添加以下代码来支持横向:
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskLandscape;
- (BOOL) shouldAutorotate
return YES;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationLandscapeLeft;
此外,请确保您是在实际设备上而不是在模拟器上进行测试,因为自动旋转在模拟器上的行为不同。
【讨论】:
【参考方案3】:这样就行了:
CGAffineTransform transform = CGAffineTransformIdentity;
webView.transform = CGAffineTransformRotate(transform,-M_PI/2);
【讨论】:
【参考方案4】:好的。首先,我发布的问题不清楚。我的问题是,当我以纵向加载 webview 时,它以横向模式 (CSS) 加载 webview 元素,并以横向模式 (CSS) 加载。
原来我没有应用正确的 CSS 样式。
我所做的修复是: 在 ViewDidLoad 和 willAnimateRotation 方法中,我将通知发布到我的 javascript 以根据方向更新样式:)
【讨论】:
能否请您显示此代码 - 我遇到了同样的问题,但在涉及 javascript 时不知道 @iOSProgrammingIsFun 你能详细说明你的问题吗?我以前做过这件事。我需要搜索我的代码。 好的,我有一个视图控制器 A,它以模态方式呈现视图控制器 B,并且是全屏样式。 VC B 里面是一个全屏的uiwebview。该网络视图用于显示特定网站 - 比如说***。如果应用程序以纵向运行,则网页将被格式化为纵向并缩放以适应 Web 视图 - 即使在界面构建器中未勾选 scalestofit。我希望在移动 safari 中打开相同的页面,页面的宽度超过屏幕的宽度并且更具可读性,它也可以缩放,而 VC B 中的 webview 则不能。此外,如果 VC B 旋转,页面就会混乱 这样就部分滚出物理屏幕的顶部,不能向下滚动。代码中没有针对不同方向应用额外的格式更改。此外,网页仍然只适合物理屏幕的宽度,而不是更宽(就像在移动 safari 中一样)。以上是关于模式视图中的 UIWebview 在横向模式下以纵向显示的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 8.1 下以横向模式剪切打印的 wpf 视觉对象
在 Objective-C 中的 iOS 6 上强制横向方向