我搜索了许多主题,终于找到了一个可行的解决方案。
在我的示例中,我有两个 VC:
A -> VC 嵌入在 Nav 中。控制器并且应该只支持纵向视图。
B -> VC 没有嵌入到 VC 中,应该只支持 Landscape。
我想从视图 A 转到视图 B(通过按下按钮),然后返回查看 A,具体方向仍然正确。
一、为UINavigationController创建一个Category,在其.m文件中写入如下内容:(代码会自动调用)
- (NSUInteger)supportedInterfaceOrientations
{
NSLog(@"supportedInterfaceOrientations = %d ", [self.topViewController supportedInterfaceOrientations]);
return [self.topViewController supportedInterfaceOrientations];
}
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// You do not need this method if you are not supporting earlier iOS Versions
return [self.topViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
二、在 A 和 B 之间创建一个模态序列,然后在 B 和 A 之间创建另一个模态序列。
三、在每个 View Controllers .m 文件中写下以下内容:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
或者
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
添加此代码后。您将能够更改单个视图 B 的方向。