在iOS 6中未调用shouldAutorotateToInterfaceOrientation

我正在使用MGSplitViewController,并且正在shouldAutorotateToInterfaceOrientation控制旋转时主视图控制器的大小。


在iOS 5上一切正常,但在iOS 6(模拟器和iPad)shouldAutorotateToInterfaceOrientation上从未调用过。


这是我应该期望在iOS 6的最终版本中修复的错误,还是我不知道的错误已更改?


慕雪6442864
浏览 698回答 2
2回答

Smart猫小萌

好的,我可以在iOS6 iPad Simulator中使用它。好极了。这是我所做的:我只是告诉你之前和之后,这应该是不言而喻的:之前- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {if (interfaceOrientation==UIInterfaceOrientationPortrait) { // do some sh!t}return YES;}后- (BOOL)shouldAutorotate {UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];if (orientation==UIInterfaceOrientationPortrait) { // do some sh!t}return YES;}至于支持的方向,您可以在info.plist中这样指定: 或使用代码:-(NSUInteger)supportedInterfaceOrientations{    return UIInterfaceOrientationMaskPortrait; // etc}编辑:再三考虑,如果您打算支持较低版本(iOS4.3 / 5 / 5.1)以及6.0,则只需包含两种具有相同代码内容的方法即可。为我工作(无论如何在SIM卡中)

qq_花开花谢_0

这是针对iOS 5和更早版本代码的解决方案,它不涉及重复逻辑。只需将此代码添加到您的视图控制器中,它就会从您现有的shouldAutorotateToInterfaceOrientation方法中生成supportedInterfaceOrientations。-(BOOL)shouldAutorotate{    return YES;}-(NSInteger)supportedInterfaceOrientations{NSInteger mask = 0;if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeRight])    mask |= UIInterfaceOrientationMaskLandscapeRight;if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeLeft])    mask |= UIInterfaceOrientationMaskLandscapeLeft;if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortrait])    mask |= UIInterfaceOrientationMaskPortrait;if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortraitUpsideDown])    mask |= UIInterfaceOrientationMaskPortraitUpsideDown;return mask;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS