0

私のアプリケーションは、ポートレートとランドスケープの間を行き来します。すべてのコンテンツ (ラベル、uiimageviews、uilabels) を並べて、両方の向きに再配置します。ただし、実際にデバイスを回転させたときの唯一の変化です。回転後にタブ間を循環すると、ユーザーが回転したときに設定した方法ではなく、自動サイズで表示されます。

デバイスの向きを検出し、別のタブをタップしたときに向きを反映するようにビューを表示するにはどうすればよいですか?

わかりました、viewWillAppearに設定しました。向きを検出せず、設定した場所にコンテンツを表示しない理由はありますか?

-(void)viewWillAppear:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration{

 UIInterfaceOrientation toOrientation = self.interfaceOrientation;
 [UIView beginAnimations:@"move buttons" context:nil];
 [UIView setAnimationDuration:0.5f];
 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
 if(toOrientation == UIInterfaceOrientationPortrait
    || toOrientation == UIInterfaceOrientationPortraitUpsideDown)
 {
  aboutContent.frame = CGRectMake(20, 100, 280, 107);
  myLogo.frame = CGRectMake(-5, 20, 330, 65);
  bulletOne.frame = CGRectMake(40, 220, 240, 45);
  bulletTwo.frame = CGRectMake(40, 270, 240, 45);
 }
 else
 {
  aboutContent.frame = CGRectMake(40, 80, 400, 70);
  myLogo.frame = CGRectMake(230, 30, 20, 20);
  bulletOne.frame = CGRectMake(90, 140, 330, 65);
  bulletTwo.frame = CGRectMake(90, 170, 330, 65);
 } 
 [UIView commitAnimations];
}
4

1 に答える 1

2

各 UIViewController の viewWillAppear でデバイスの向きを確認し、向きがレイアウトと異なる場合は、willRotateToInterfaceOrientation:duration:を自分自身に送信します。これは、 willRotateToInterfaceOrientation:duration: がレイアウトを指定された向きに更新すると仮定しています。

于 2010-04-01T00:33:55.067 に答える