强制视图控制器的纵向方向不起作用

时间:2015-12-11 08:29:23

标签: ios rotation orientation landscape-portrait portrait

我的应用支持所有界面方向,但我希望某个视图仅以纵向显示。我有UINavigationController子类的实现:

@implementation CustomNavigationController

- (BOOL)shouldAutorotate
{
   return [[self.viewControllers lastObject] shouldAutorotate];
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
   return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

// More methods

@end

然后,对于它的根视图控制器,我实现了:

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];

   NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
   [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}

- (BOOL)shouldAutorotate
{
    return YES;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return UIInterfaceOrientationPortrait;
}

这可以防止视图控制器的视图在纵向时旋转到横向,但是当我导航到此视图时,设备已经处于横向状态,并且我之前在视图中旋转到横向,我也在景观中看到了这个观点。

我该如何解决这种情况?

0 个答案:

没有答案