如何强制旋转 UIViewController

Posted

技术标签:

【中文标题】如何强制旋转 UIViewController【英文标题】:How to force rotation of a UIViewController 【发布时间】:2013-04-17 15:09:36 【问题描述】:

我有一个UINavigationController,其中包含一些UIViewController...所有UIVienController 应该只处于纵向模式。

但只有其中一个UIViewController,我应该presentModalViewController。这个modalViewController 应该被允许在所有方向上旋转。 没问题,直到我想关闭这个modalViewController

如果这个modalViewController 在我关闭它时处于横向 模式。 parentViewController 不要回到肖像。

如何强制旋转我的parentViewController?我尝试了一些解决方案,但我无法使其工作。有什么建议吗?

【问题讨论】:

你到底尝试了什么? 我试图只允许一个 UIViewController 到所有方向,并且这个 UIViewController 应该呈现为模态。 【参考方案1】:

由于您在关闭modalviewcontrollerviewWillApperviewDIdAppear 时将modalviewcontrollerpresentModalViewController 一起呈现,因此不会调用方法。

您必须通过nsnotifcationdelegate pattern 调用UIViewController 中的方法。

因此,当您关闭 modalviewcontroller 时通知您的 UIViewController 并在 yourmethod 中调用 yourmethod 检测当前方向,如果不是纵向,则将其更改为纵向。

-(void) yourmethod 

    if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight )
    
       [[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
     

 

【讨论】:

viewWillAppear 和 viewDidAppear 在关闭后被调用......并且将 statusBar 方向设置为纵向只会将 statusBar 置于纵向模式,而不是所有 viewController。 这意味着您使用的是以前版本的 ios 5-,因为在 IOS 5 和更高版本中,当您关闭模态视图时不会调用 viewWillAppear。 viewWillAppear 如果我关闭我的 ModalViewController,则会在 RootViewController 中调用,请检查您所说的内容。我和你一样在 iOS6 上,它可以工作......我刚刚测试过。

以上是关于如何强制旋转 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

无法强制我的精灵顺利移动/旋转

手机旋转时强制android像iphone一样调整文本大小

强制 uiviewcontroller 旋转

强制旋转 UIViewController

记录一个移动端图片预览(支持旋转),使用css强制旋转的坑

android 屏幕旋转生命周期和setRequestedOrientation强制旋转