在app中只更改一个UIViewController的UIInterfaceOrientation

时间:2012-11-13 07:51:27

标签: objective-c ios uiinterfaceorientation

我有一个iPhone应用程序,其结构类似于“导航控制器带表 - >下一个视图控制器带表 - > QLPreviewController”。通过在第一个视图控制器(带导航控制器)中的表格单元格中出现新视图控制器与另一个表格,通过点击它的单元格显示QLPreviewController。

例如:在第一个表中有组,在第二个表中 - 所选组的文档和用于预览所选文档的QLPreviewController。

我的应用中的每个ViewController必须仅以纵向(非上部)方向显示,但QLViewController还必须支持横向(左右)。

我在QLPreviewController出现之前将标志canRotate设置为YES。在AppDelegate中如果canRotate == YES我为任何Orientation返回YES,则旋转QLPreviewController。方法previewControllerWillDismiss中的QLPreviewControllerDelegate:(QLPreviewController *)控制器设置标志canRotate返回NO。但是如果在QLPreviewController解除之前方向是Landscape,那么我的所有ViewController都会保持横向方向......

如何在WillDismiss方法中将ViewController旋转回纵向?

1 个答案:

答案 0 :(得分:2)

我在申请表上所做的事情(或多或少与你的一样)是:

1)为两个屏幕设置shouldRotate Yes

2)对于第一个视图,设置以下蒙版:

return UIInterfaceOrientationMaskPortrait

对于第二个View put:

return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;