如何强制旋转 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】:由于您在关闭modalviewcontroller
、viewWillApper
或viewDIdAppear
时将modalviewcontroller
与presentModalViewController
一起呈现,因此不会调用方法。
您必须通过nsnotifcation
或delegate 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的主要内容,如果未能解决你的问题,请参考以下文章