更改屏幕时以纵向显示的横向视图Xcode 4.5

更改屏幕时以纵向显示的横向视图Xcode 4.5,xcode,ios6,rotation,Xcode,Ios6,Rotation,我最近在Xcode 4.5(iOS 6)中成功地使用了从纵向旋转到横向的子视图。现在旋转已经开始工作,我可以为纵向和横向设计单独的视图,我遇到了另一个问题 当应用程序以纵向模式打开时,一切正常。但当我按下按钮导航到新屏幕时。横向视图显示在纵向视图的上方。如果我将模拟器旋转到横向,然后再回到纵向,它将加载纵向视图 在景观视图中,一切都正常工作。这只发生在纵向视图中 在我的.h文件中,我有以下内容: @interface ViewController : UIViewController{

我最近在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;
- (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;
    }

}
在我的.m文件中,我有:

@interface ViewController : UIViewController{


    IBOutlet UIView *portraitView;

    IBOutlet UIView *landscapeView;
}

//rotate views

@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;
- (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文件,一个包含所有代码的主/空白视图,以及一个连接到相应插座的纵向和横向视图

可能是一些简单的事情


谢谢。

确保隐藏您不想要的视图。你的代码对我来说非常有效。我先隐藏两个视图,然后确定方向并显示该视图。对于旋转,我使用了您代码的其余部分。

来澄清,由于我没有收到任何回复,如何在纵向模式下更改屏幕时防止设备显示横向视图?嗯。。。可以进一步澄清:我正在两个单独的带按钮的xib页面之间导航,即…第1页,主页。每个页面都有一个xib文件,上面描述了两个独立的视图。在横向视图中旋转和更改页面时,一切正常。但当我在纵向视图中更改页面时,横向视图和纵向视图都会显示,这样横向视图就位于纵向视图的上方,您可以在背景中看到部分纵向视图。基本上,在纵向视图中更改页面时不会隐藏横向视图。有什么建议吗???你找到解决办法了吗?谢谢你的回复。我想我没有隐瞒那些一直给我带来问题的观点。我已经用坐标和一个视图控制器硬编码了我的旋转;使用UIInterfaceOrientation理论定向=自我界面定向;对于IOS 6和-(void)将AnimateRotationInterfaceOrientation:(UIInterfaceOrientation)更改为IOS 4-5的接口方向持续时间:(NSTimeInterval)持续时间。但现在我有了这个选择。伟大的您知道如何使用数组在按钮中放置标签吗?(见我最近的帖子)。快把我逼疯了!!