ios6中的方向问题

时间:2012-10-03 10:18:39

标签: ipad uinavigationcontroller ios6 presentmodalviewcontroller

我在我的应用程序中使用UINavigationController,我的第一个控制器名为 A ,只有portrite是严格的,我的 A 控制器中有一个按钮。我点击在按钮上,我正在为另一个名为 B 的视图控制器创建实例。在为B创建实例后,我使用以下方法

进行模态化
[self presentViewController:BInstance animated:YES completion:^{
            NSLog(@"completed");
        }];

我的B控制器能够支持所有方向,这是预期的,直到ios5.1及更早版本。现在我正在尝试使用Xcode4.5在ios6上运行我的项目它没有被轮换我期待解决问题我发现一些关于 shouldAutorotateToInterfaceOrientation:方法的博客从最新版本中被弃用iOS6的。我也使用了另类

-(BOOL)shouldAutorotate{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}

但仍然没有太多预期的结果。

问题:即使我的父 A 仅适用于portrite,我的 B 控制器将适用于所有方向。

在此先感谢您对此有用的所有建议/建议。

1 个答案:

答案 0 :(得分:5)

首先,在AppDelegate中,写下这个。 这非常重要

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return (UIInterfaceOrientationMaskAll);
}

然后,对于UIViewControllers,你只需要 PORTRAIT 模式,编写这些函数

- (BOOL)shouldAutorotate
{
    return YES;
}

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

对于需要 LANDSCAPE 的UIViewControllers,将屏蔽更改为All。

- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskAllButUpsideDown);
    //OR return (UIInterfaceOrientationMaskAll);
}

现在,如果您想在Orientation更改时进行一些更改,请使用此功能。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{

}