4

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

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

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

我输入了代码,以及从 iOS 6 和旧方法(已弃用)到 iOS 5 的新方法。

所以寻找旋转方法:

#pragma mark - Rotate Methods

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

- (BOOL) shouldAutorotate
{
   return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

#pragma mark - Rotate Methods iOS 5

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
    {
        [menuPortrait setHidden:NO];
        [menuLandscape setHidden:YES];
    }

    if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
    {
        [menuPortrait setHidden:YES];
        [menuLandscape setHidden:NO];
    }
    return YES;
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
        if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
        {
            [self.menuLandscape setHidden:YES];
            [self.menuPortrait  setHidden:NO];
        }
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
        {
            [self.menuLandscape setHidden:NO];
            [self.menuPortrait setHidden:YES];
        }

    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

你能帮我就这个问题提供一些建议吗!提前感谢您的回答!

4

1 回答 1

3

我通过像这样子类化所有视图控制器来实现它:

//.h #导入

@interface ITViewController : UIViewController

@end

//.m

#import "ITViewController.h"

@interface ITViewController ()

@end

@implementation ITViewController


- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

这强制横向模式。您可以更新这两种方法的内容以符合您想要的行为

于 2012-10-31T17:12:46.430 回答