2011-06-16 14 views
2

私は、横向きモードに切り替えると、画面上部のナビゲーションバーに合わせて高さを調整しないカスタムUIToolBarがあります。高さは同じで、ちょっと奇妙に見えます。 UINavigationControllerのデフォルトのツールバーは、実際には回転したときにサイズが小さくなります(残念ながら、プッシュ/ポップの切り替えの問題で使用できません)。現在のサイズ変更マスクがある:私は「UIViewAutoresizingFlexible 身長」を追加した場合UIToolbarの高さを横向きに調整する

[ customToolbar setAutoresizingMask: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin) ]; 

奇妙なことが起こる...ので、私はこれを使用するかどうかはかなりよく分かりません。

ナビゲーションバーの高さに合わせてUIToolBarを自動的にサイズ変更/回転する正しい方法がわかっている場合は、教えてください。

答えて

5

あなたは、標準のナビゲーションバーと同じアスペクト比を使ってカスタムツールバーのサイズを変更する必要がある場合には、このようなwillAnimateRotationToInterfaceOrientationコントローラメソッドを実装する必要があります。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    CGRect navigationToolbarFrame = self.navigationController.navigationBar.frame; 
    CGRect customToolbarFrame = CGRectOffset(navigationToolbarFrame, 0.0, navigationToolbarFrame.size.height); 
    [UIView animateWithDuration:duration animations:^{ 
     self.customToolbar.frame = customToolbarFrame;  
    }]; 
} 
+0

アニメーションでとても素敵です。 –

+0

voromaxの回答に関しては、私がこれらのコード行を実装したとき、私のツールバーはランドスケープモードに回転されたときに中央に終わった。どのように私はそれを底にシフトするのですか?誰でも知っていますか? (私は彼の答えの下で何らかの理由でコメントできませんでした) – Masterminder

+1

@ Masterminderツールバーを最下部に配置したいのであれば、標準のUINavigationControllerツールバーを使わないのはなぜですか?あなたの場合、私はあなたがナビゲーションバーを無効にしていると仮定することができます。したがって、このメソッドは回転中にツールバーのフレームを解決できません – voromax

1

それを達成するための最も簡単な方法は、私はこのようなものを使用UINavigationcontrollerを作成し、モーダルビューとしてそれを提示することである:

あなたが使用することができますnavigatiocontrollerとしてビューを提示しているので
NewViewController *f = [[NewViewController alloc]initWithNibName:@"NewView" 
              bundle:[NSBundle mainBundle]]; 
self.newViewController = f; 

[f release]; 

UINavigationController *navigationController = [[UINavigationController alloc] 
          initWithRootViewController:self.newViewController]; 

[self presentModalViewController:navigationController animated:YES]; 

ツールバーのプロパティ

+0

うーん、私は思います私は少し問題を明確にする必要があります。私は2つのView Controllerを持っており、どちらもナビゲーションコントローラの一部です。私が2番目のviewcontrollerを押すと、最初のものではなく、ツールバーが必要になります。私がデフォルトのナビゲーションコントローラToolBarを使用すると、トランジションは実際には醜いです(黒い四角形の表示)。だから私は、2番目のビューコントローラのビューに追加するカスタムツールバーを作成しました。このようにして、遷移中に画面に「接続」されたままになります。左にあるのは、カスタムツールバーを回転させて、横向きモードで高さのサイズを適切に変更することだけです。マスクで解決できますか? – Ivo

0

マスクについてはわかりませんが、-willRotateToInterfaceOrientation:duration:でビューのサイズを変更できます。必要に応じてフレームを変更するだけです。また-willAnimateRotationToInterfaceOrientationでそれを行うことができます:期間:

関連する問題