0

我有一个带有两个不同视图的 xib 文件,一个用于纵向,一个用于横向。

在我的 .m 文件中,我有以下内容:

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

{
if( UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
{

self.view = iPadLandscape;
}
else {

self.view = iPadPortrait;
}
}

当应用程序运行该特定屏幕并且我更改方向时,新视图加载正常。我注意到了两个问题。xib 的“视图”连接到纵向视图。因此,当应用程序以纵向启动时,它看起来不错,但如果以横向启动,它仍会加载纵向视图。但是,如果我将其移至纵向并返回横向视图,则可以正常加载。

另一个问题是,如果我以纵向启动并转到下一个屏幕,然后更改为横向模式(旋转正常),然后返回我的主屏幕,它仍将处于纵向视图。

有任何想法吗???

4

2 回答 2

0

在 viewWillAppear 中明确检查当前方向并更新您的视图。

由于 willRotateToOrientation 不会在应用程序加载和许多其他事件中调用

于 2013-01-21T16:39:15.040 回答
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;
  }
}
于 2013-01-21T16:44:53.450 回答