我有一个包含两个不同视图的xib文件,一个用于纵向,一个用于横向。
在我的.m文件中,我有以下内容:
-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if( UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
{
self.view = iPadLandscape;
}
else {
self.view = iPadPortrait;
}
}
当应用程序运行该特定屏幕并且我更改方向时,新视图加载正常。我注意到有两个问题。 xib的“视图”连接到纵向视图。因此,当应用程序以纵向方式启动时,它看起来很好,但如果以横向方向启动,它仍会加载纵向视图。但是,如果我将它移动到肖像并返回景观视图加载正常。
另一个问题是,例如,如果我以纵向方式启动并转到下一个屏幕,然后更改为横向模式(旋转正常),然后返回到我的主屏幕,它仍将处于纵向视图中。
任何想法???
答案 0 :(得分:0)
在viewWillAppear中明确检查当前方向并更新您的视图。
因为在应用程序加载和许多其他事件上没有调用willRotateToOrientation
答案 1 :(得分:0)
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSUInteger orientation = [UIDevice currentDevice].orientation;
switch (orientation) {
case UIDeviceOrientationLandscapeLeft:
case UIDeviceOrientationLandscapeRight:
// self.view == my landscape view
break;
case UIDeviceOrientationPortrait:
case UIDeviceOrientationPortraitUpsideDown:
// self.view == my portrait view
break;
}
}