Navigation Controller を使用してトップバーを表示する iPhone アプリケーションがあります (タイトルと戻るボタンなど)。
アプリケーション ウィンドウにを追加しましたUITabBar
。これにより、その部分を切り替えることができます。ViewController の各ビューにタブ バーを追加する代わりに、アプリ ウィンドウにバーを追加しました。
(私がViewControllerに持っていたとき、コントローラーを切り替えると、アニメーション化されたポップ/プッシュがビュー全体とともに発生したときに、タブバーが左/右にスワイプしました)。
そこで、 を に追加し、UITabBar
それMainWindow.xib
をアプリ デリゲートの変数に結び付けました。私のdidFinishLaunchingWithOptions
方法では、次のコードを追加しました。
[self.window addSubview:navigationController.view];
CGRect frame = navigationController.view.frame;
frame.size.height -= tabbar.frame.size.height;
navigationController.view.frame = frame;
tabbar.selectedItem = [tabbar.items objectAtIndex:0];
navigationController
TabBar を表示するために、メイン (の) ビューのサイズを変更します。
デバイスを回転させると問題が発生します。ビューがウィンドウ全体に引き伸ばされ、TabBar を表示できなくなります。
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation
次のコードを使用して、ViewController にメソッドを追加しました。
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = self.view.frame;
frame.size.height -= [AppState shared].tabBar.frame.size.height;
//frame.origin.y = [AppState shared].tabBar.frame.size.height;
//frame.origin.x = 100;
self.view.frame = frame;
frame = [AppState shared].tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.origin.y - frame.size.height;
[AppState shared].tabBar.frame = frame;
}
ビューのサイズを変更し、タブ バーをビューの上下の部分に移動します (ここでは、縦向き/縦向きの逆さまの向きのみを許可します)。問題は、TabBar も逆さまになっていて、クリックできなくなっていることです。
以下の画像のようになります。
この種の状況を処理する方法を知っている人はいますか?または、タブバーをView Controllerに関連付けずに、インターフェイスの回転をスムーズに処理できるようにする方法は?