0

いくつかのタブを備えたタブバーのセットアップがあります。最初の tabitem は、縦向きにレイアウトされた xib をプログラムでロードする viewcontroller です。ユーザーが電話を回転させると、横向きに配置されたモーダル ビューが自動的に表示されます。このメカニズムはうまく機能します。

デバイスを縦向きモードに回転すると、モーダル ビューが閉じられ、下部にタブバーが表示されます。デバイスが回転したときに、スクロールビューや Web ビューなどの他のタブバー項目の一部を横向きに自動回転させたいと考えています。

私は RotateTabBarViewController というクラスを実装しました。これには shouldAutorotateToInterfaceOrientation メソッドが含まれており、selectedViewController で同じメソッドの値をチェックします。したがって、webview に shouldAutorotateToInterfaceOrientation メソッドが true を返す場合、ビューは期待どおりに回転します。

これが問題です。回転したビューが横向きモードの場合でも、タブバーは表示されたままです。つまり、ユーザーは最初の項目のアイコンをクリックできます。最初のアイテムがクリックされると、横向きモードであることが認識され、モーダル ビューが再び自動的に読み込まれます。唯一の問題は、ビューが画面上でずれていることです。

モーダル ビューをあるべき場所に再配置するソリューションを探しています。再調整が必要なのはメイン ビューなのか、モーダル ビューだけなのかわかりません。

次のリンクには、コンセプトのデモが含まれています。

http://www.veryniceindustries.com/rotation_demo.zip

  • デバイスを回転させて縦向きにします
  • アイテム 2 を選択
  • デバイスを横向きに回転します (このビューを再調整するには助けが必要です)
  • 項目 1 を選択します (モーダルはランドスケープに表示されますが、オフセットされています)

どんな助けでも大歓迎です。

ベスト、ハウィー

4

1 に答える 1

0

viewController#1にviewWillAppearメソッドを実装し、ビューのフレームを修正することを検討しましたか?

または、orientationChangedメソッドまたはupdateItemOneViewメソッドのitemOneViewControllerで処理しますか?

PS:ソースコードを提供してくれてありがとう。若いObj-Cプログラマーは、他の誰かが問題にどのように取り組んでいるかを常に見守っています。

于 2009-12-26T13:19:09.357 に答える