0

ナビゲーション・コントローラを使用してトップ・バー(タイトルと戻るボタンなどを含む)を表示するiPhoneアプリケーションがあります。iPhoneのUITabBarはアプリケーションウィンドウの一部です。デバイスを回転させるときの問題

アプリケーションウィンドウにUITabBarを追加しました。これにより、アプリケーションウィンドウの一部を切り替えることができます。 ViewControllerのビューのそれぞれにタブバーを追加するのではなく、アプリケーションウィンドウにバーを追加しました。

(私がViewControllerでそれを持っていたときに、コントローラ間の切り替えによって、アニメーションポップ/プッシュが発生したときにタブバーが左/右にスワイプされ、全体ビューと共に)。

したがって、MainWindow.xibUITabBarを追加して、それをアプリデリゲートの変数に関連付けました。私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]; 

TabBarには目に見えるようにするために、メイン(navigationController年代)ビューのサイズを変更します。

デバイスを回転させると問題が発生します。私のビューは完全なウィンドウに引き伸ばされ、タブバーを表示する能力が失われます。

私は、次のコードを使用して、私のViewControllerに- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientationメソッドを追加しました:

- (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も逆さまにされていて、クリックできなくなったことです。

Tab bar upside down

誰でもこのような状況に対処する方法を知っている:

これは、下の画像のように見えますか?または、タブバーをコントローラの表示に結びつけず、インターフェイスの回転をスムーズに処理できる方法を教えてください。

答えて

1

意図しない方法でタブバーを使用しています。他のビューの制御されていない要素としてUITabBarViewを使用しているようです。それは機能ではありません。

UITabBarViewは、UITabBarControllerによって直接制御される必要があります.UITabBarViewは、タブバーに表示されるビューのすべてのビューコントローラを制御する必要があります。つまり、タブバーコントローラは、サブコントローラを制御するナビゲーションコントローラの一種です。

3つのタブがあり、3つ目がナビゲーションコントローラであるとします。あなたのコントローラ階層は次のようになります。

TabbarController: 
    -->tab1ViewController 
    -->tab2ViewController 
    -->tab3ViewController(UINavigationController): 
      -->rootViewController-->secondViewController 

あなたは、そのコントローラと適切なコントローラ階層なしタブバーのビューを移動して管理しようとしています。それはうまくいきません。

関連する問題