ViewController方向与状态栏不一致

时间:2014-07-03 15:45:20

标签: ios iphone objective-c ios7 ios7-statusbar

我的应用程序具有以下主要结构:UITabBarController,其中每个选项卡都包含一个UINavigationController,可根据用户交互推送视图。几乎所有的应用程序都只是纵向,除了一些特定的部分。

我想要的行为是在push其中一个部分(让我们说一张地图)时有横向方向。在该地图中,用户可以返回纵向。当他回到主菜单时,他应该回到纵向(这里不允许景观)。我不介意他是否暂时在风景中。

这是我的UITabBarController子类中的一些代码:

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

- (NSUInteger)supportedInterfaceOrientations
{
    return [self.selectedViewController supportedInterfaceOrientations];
}

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

我在UINavigationController中使用相同的代码,在特定的菜单中,我有这个:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

- (BOOL)shouldAutorotate
{
    if (!UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
        return NO;

    return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

这种行为几乎一直在起作用。当菜单的方向是横向并且用户旋转他的设备时,他会回到纵向,但不能回到横向。

我的问题是:偶尔会有状态栏旋转,但不会旋转视图控制器。 (参见图片)每次shouldAutorotate被调用并返回正确的值(即,它返回YES但不自动旋转)。

我知道这是在扩展SDK ,但我很乐意一直在努力。任何提示?

enter image description here

0 个答案:

没有答案