更改屏幕时,横向视图显示在纵向Xcode 4.5

时间:2013-04-29 06:59:57

标签: xcode ios6 rotation

我最近使用子视图在Xcode 4.5(iOS 6)中从纵向旋转到横向旋转取得了一些成功。现在轮换正在工作,我可以为纵向和横向设计单独的视图,我遇到了另一个问题。

当应用程序以纵向打开时,一切都很好。但是当我按下按钮导航到新屏幕时。横向视图显示在纵向视图的顶部。如果我将模拟器旋转到横向然后再回到纵向,它会加载纵向视图。

在景观视图中一切正常。这只发生在纵向视图中。

在我的.h文件中我有这个:

@interface ViewController : UIViewController{


    IBOutlet UIView *portraitView;

    IBOutlet UIView *landscapeView;
}

//rotate views

@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;

在我的.m文件中我有这个:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
    [self.view addSubview:portraitView];
    [self.view addSubview:landscapeView];


}


-(void)didRotate:(NSNotification *)notification
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationPortrait)
    {
        portraitView.hidden = NO;
        landscapeView.hidden = YES;
    }
    else if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
    }
    else if(orientation == UIDeviceOrientationLandscapeRight)
    {
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
    }

}

我还有一个包含三个视图的xib文件,一个包含所有代码的主/空视图以及连接到相应插座的纵向和横向视图。

可能简单!

感谢。

1 个答案:

答案 0 :(得分:0)

确保隐藏您不想要的视图。您的代码对我来说非常合适。我从隐藏的两个视图开始,然后确定方向并显示该视图。为了轮换,我使用了你的其余代码..