shouldAutorotateToInterfaceOrientation:从不打电话

时间:2012-08-24 07:39:42

标签: ios iphone orientation

我将受支持的界面方向设置为除了部署信息下的纵向上的所有内容。

我想覆盖shouldAutorotateToInterfaceOrientation:用于自定义行为。 (即根据条件支持景观)

由于约束(自定义视图转换),我只有一个viewcontroller

这就是我的appdelegate中的代码:

self.viewController = [[MyController alloc]initWithNibName:nil bundle:nil];

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

在myController.m中,我覆盖了shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}

应用程序自动旋转到所有方向但纵向颠倒并且从不调用回调。我在change return from shouldAutorotateToInterfaceOrientation: at runTime尝试了这个建议但没有成功。为什么呢?

旁注,在运行时更改旋转支持的最佳方法是什么?

更新

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

被调用。我试过放入

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

没有成功:(

1 个答案:

答案 0 :(得分:1)

它为我工作:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;
    if ([self isKindOfClass:[YourViewController class]]) { // Your view class
        orientations |= UIInterfaceOrientationMaskPortraitUpsideDown;
    }
    return orientations;
}

取向:

orientations |= UIInterfaceOrientationMaskLandscapeLeft;
orientations |= UIInterfaceOrientationMaskLandscapeRight;