3

iPhoneの向きが変わったときにUITabBarの場所を切り替えて正常に動作しますが、電話の位置に関係なく、最初のタブのビュー内のコントロールを静的に保ちたいです。明らかな何かが欠けているような気がしますか?

編集: 基本的に、コントロールは常に横向きですが、タブ バーは向きを切り替える必要があります。これは可能ですか?

4

3 に答える 3

1

コントロールを再調整したくないビューでは、自動サイズ変更を無効にします[self.view setAutoresizesSubviews:NO];。これにより、すべてのコントロール (サブビュー) がインターフェイスの向きの変更に応答しなくなりますが、タブは引き続き応答します。現在のビューの autoresizingMask を設定する必要がある場合もあります。[self.view setAutoresizingMask:UIViewAutoresizingNone];

追加:回転させたくないすべてのコントロールに対して次のことを試してください

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
   switch (toInterfaceOrientation) {
      case UIInterfaceOrientationLandscapeLeft:
         label.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
         break;
      case UIInterfaceOrientationLandscapeRight:
         label.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees
         break;
      case UIInterfaceOrientationPortraitUpsideDown:
         label.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees
         break;
      default:
         label.transform = CGAffineTransformMakeRotation(0.0);
         break;
   }
}
于 2011-05-01T17:51:26.950 に答える
0

風景の例

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

また

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscape);
}
于 2011-04-27T23:03:43.897 に答える
0

残念ながら、それは正確には簡単ではありません。コンテンツ ビュー コントローラーを応答させずに、UITabBarController をインターフェイスの変更に応答させることはできません。

しかし、それを行う方法があります。コンテンツ ビュー コントローラーのでは、回転させたくないサブビューにwillAnimateRotationToInterfaceOrientation:duration:( プロパティを使用して) 反対の回転を適用できます。transformたとえば、UIInterfaceOrientationLandscapeLeft は時計回りに 90° の回転であるため、ビューに反時計回りに 90° の回転を適用すると、回転してtransformいないように見えます。

必要に応じて、コンテンツ ビュー コントローラーのインターフェイス全体を UIView に含めることができるため、その 1 つのビューを逆回転 (およびサイズ変更) するだけで済みます。ビュー コントローラーのメイン ビューに逆回転を適用することが機能するかどうかはわかりません。システムがその特定のビューの設定をオーバーライドする可能性があります。

于 2011-05-01T19:13:16.633 に答える