0

对目标 C 和 iOS 来说仍然是新手,我面临一个新问题。

这很简单,我的应用程序中只需要一个 UIViewController 就可以处于横向模式,所以我以这种方式构建了我的应用程序:

一个自定义 UINAvigationController : MyNavController 在我的 MainStoryBoard.storyboard 中设置为“是初始视图控制器”。然后我添加这个 navController ...:

- (NSUInteger)supportedInterfaceOrientations
{

    return [[self topViewController] supportedInterfaceOrientations];
}

...能够控制自定义导航控制器的哪些 UIVIewController 子级可以处于横向。

在景观 UIVIewController 我设置:

- (NSUInteger)supportedInterfaceOrientations
{
        return UIInterfaceOrientationMaskLandscapeLeft ;
        return UIInterfaceOrientationMaskPortrait; 
}

所以我可以得到这个控制器景观与否。在我的笔尖(landscape.xib)的这个风景控制器中,我在 UIPortrait 模式下设置了一个欢迎视图,在这个视图后面我有我的风景视图。所以当用户按下控制器时,他看到他必须转动他的 iPhone 屏幕。我使用以下方法收听方向变化:

[[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(orientationChanged)  name:UIDeviceOrientationDidChangeNotification  object:nil];

在orientationChanged 中,我隐藏了纵向视图,然后我们可以看到横向视图。

它可以工作,但是当您快速旋转时,效果会很差,有时视图会隐藏有时不会。所以有我的问题:

  • 在基于导航的应用程序上,使只有一个控制器景观功能的最佳方法是什么?
  • 我用 :

    [self.navigationController pushNavigationController:landscapeController];

是否有另一种方法不推动 ladnscapeController 使其不再依赖于 navController ?

谢谢大家,欢迎任何帮助。

4

1 回答 1

0

在推送下一个控制器之前使用此代码

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;

弹出到后退控制器时使用此代码

 [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationIsPortrait(UIInterfaceOrientationMaskPortrait);
于 2013-05-01T13:21:13.623 回答