我最近在 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 文件,一个包含所有代码的主/空白视图,以及一个连接到适当插座的纵向和横向视图。
可能很简单!
谢谢。