0

縦向きと横向きの2つの異なるビューを持つxibファイルがあります。

私の .m ファイルには次のものがあります。

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

{
if( UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
{

self.view = iPadLandscape;
}
else {

self.view = iPadPortrait;
}
}

アプリがその特定の画面を実行しているときに向きを変更すると、新しいビューが正常に読み込まれます。しかし、私が気づいた2つの問題があります。xib の「ビュー」は、縦向きのビューに接続されています。そのため、アプリを縦向きで起動すると問題なく表示されますが、横向きで起動すると縦向きビューが読み込まれます。しかし、ポートレートに移動して元に戻すと、ランドスケープ ビューが正常に読み込まれます。

もう1つの問題は、たとえば、縦向きで起動して次の画面に移動し、横向きモードに変更して(回転しても問題ありません)、メイン画面に戻ると縦向きのままです。

何か案は???

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 に答える