为iOS 6工作时,为什么旋转不适用于iOS 5

时间:2013-03-04 09:44:05

标签: ios ios5 ios6 uiviewcontroller

我有一个应用程序,其中5.0作为部署目标,6.1作为基本sdk,它在iOS 6.x设备/模拟器上运行良好。但是在5.x上,我的观点并没有转动。我已经google了一下,发现了一些Stackoverflow帖子,但我无法在这一切中找到正面和尾巴。我想我需要实现我自己使用的不同视图控制器的子类,但是哪个,我是对的?

在我的应用代理didFinishLaunchingWithOptions中,我使用它来创建我的应用:

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[viewController1, viewController2, viewController3];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];

我创建了我的viewController1 ..就像这样:

viewController1 = [[UINavigationController alloc] initWithRootViewController:[[SearchVC alloc] initWithNibName:@"SearchVC_iPhone" bundle:nil]];

我已经尝试在我的SearchVC_iPhone视图控制器中实现shouldAutorotateToInterfaceOrientation,我已经尝试了子类化UINavigationController并在该子类中实现shouldAutorotateToInterfaceOrientation但是它对我不起作用我真的只是在这里猜测。

任何知道这些东西的人都可以帮助我,我还需要做些什么才能让它在iOS 5.x中运行?

谢谢你 索伦

3 个答案:

答案 0 :(得分:2)

在IOS5中,您可以使用

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

在IOS6中,您可以使用

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

答案 1 :(得分:1)

我解决了!!问题是rootViewController,我必须在rootViewController上实现shouldAutorotateToInterfaceOrientation,然后所有子视图开始按原样运行。所以我创建了自己的UITabBarController子类,它实现了shouldAutorotateToInterfaceOrientation并将其设置为rootViewController。

答案 2 :(得分:0)

我正在开发一个应用程序(Xcode 4.5 iOS 6),它必须兼容已安装软件版本的设备,从4.5开始,默认为iPhone 5.

我知道新的iOS 6更改带有自动旋转模式。

当您打开设备时,“iPhone模拟器6.0”应用程序运行正常,但是当我以旋转方式运行“iPhone模拟器5.0”时出现问题。

我输入了代码,以及从iOS 6和旧方法(不建议使用)旋转到iOS 5的新方法。

所以寻找旋转方法:

#pragma mark - Rotate Methods iOS 5




- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation

{

if (UIInterfaceOrientationIsPortrait(interfaceOrientation))

{

    //Code Here

}


if (UIInterfaceOrientationIsLandscape(interfaceOrientation))

{

    //Code Here

}

return YES;

}

#pragma mark - Rotate Methods iOS 6
  • (无效)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 持续时间:(NSTimeInterval)持续时间

    {

if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation))

    {

        //Code here

    }

if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation))

    {

         //Code here

    }

}