我将受支持的界面方向设置为除了部署信息下的纵向上的所有内容。
我想覆盖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];
没有成功:(
答案 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;