0

バイナリクロックを作成し、使用しています

willAnimateToInterfaceOrientation: duration: 

縦向きまたは横向きのオン/オフ ボタンを配置する方法。2 つのタブがあります。1 つ目はバイナリ クロックそのもので、2 つ目はクロックの読み方の説明です。

これが問題です。iPad のメイン画面は縦向きから横向きに自動的に切り替わるので、どちらの向きでもアプリを起動できます。一方、iPhone はメイン画面を縦向きでしか表示しません。これは問題ありませんが、アプリを起動するときにいずれかのタブ ボタンを押して向きを変更すると、画面 (時計または指示) の向きが変わり、他のタブ ボタンを選択すると、そのコンテンツが前の向きで表示されます。同じビュー (時計または指示) 内では、向きの変更は完全に実行されますが、向きを変更した後であるビューから別のビューに切り替えると、コンテンツが正しく表示されません。

言い換えれば、iPad でアプリを横向きで起動したとします。デフォルトでは、バイナリ クロック ビューが表示されます。縦向きに変更した場合、時計は予想どおりに変更されます。次に、iPad を縦向きにして [説明] タブ ボタンを押すと、コンテンツと iAd バナー (または場合によっては iAd バナーのみ) が横向きに表示されます。これまでの唯一の解決策は、方向を現在の設定から別の設定に変更してから元に戻すことですが、これはほとんど受け入れられません。

ビューが呼び出されたときに向きを確認し、コンテンツを正しく表示するために使用できる別の方法はありますか? 明らかに、私が持っているものは正しく機能していません。

4

1 に答える 1

0

方向に基づいてビュー上で物事を動的に移動する場合は、現在の方向を 2 つの場所で確認する必要があります。

  1. willAnimate... メソッドで、これで問題ありません。このメソッドは、ローテーションが発生し、かつメインの VC ビューが表示されている場合に呼び出されます。

  2. メソッドでviewWillAppear

VC が表示されていないときに向きが変更された場合、willAnimate... メソッドは呼び出されません。そのため、ビューを表示する前に、デバイスの向きを確認し、ビュー/サブ ビューを正しく設定する必要があります。

[[UIDevice currentDevice] orientation];メソッド インを使用しviewWillAppearて、現在の向きを確認し、ビューを正しく設定するだけです

于 2012-11-27T07:53:57.850 に答える