1

これは私が抱えている基本的な問題の例にすぎないので、この状況が少し無意味に聞こえても心配しないでください ;)

主に 2 レベルの深さの UINavigationController であるアプリがあるとします。最上位レベルは画像ファイル名のリストを含むテーブルで、2 番目のレベルには、タップしたファイル名の画像を表示する UIImageView だけがあります。

このようなアプリの場合、第 2 レベルの画像を縦向きモードに固定したまま、トップ レベルのテーブルを自動回転できるようにする良い方法を知っている人はいますか?

これまでのところ、ほとんどそこに到達できました...しかし、ランドスケープモードでファイル名をタップすると、第2レベルのビューコントローラーの shouldAutorotateToInterfaceOrientation がポートレートモードのみで yes を返しても、画像が間違った方向にスライドして表示されます。

4

2 に答える 2

3

iPhone OS 2.x ではこれを行う良い方法はありませんでしたが、3.0 では劇的に改善されました。

2.x では、デリゲート メソッドは向きの変更shouldAutorotateToInterfaceOrientation:に対してのみ従ったため、説明した動作が得られます。別のビュー コントローラーで回転された場合、新しいビュー コントローラーがその向きへの回転をサポートしていませんでした。

3.0 では、UINavigationControllershouldAutorotateToInterfaceOrientation:はプッシュまたはポップのたびにポーリングし、期待どおりの方法で返されるものに従います。shouldAutorotateToInterfaceOrientation:、自動的かつ即座に論理的な向きを反転し、新しいビューで正しい方法で縦向きにスライドします。

これは、3.0 に対してリンクされている (したがって必要な) アプリケーションでのみ機能することに注意してください。2.x に対してリンクされたアプリケーションの場合、古い動作がエミュレートされます。

于 2009-06-19T01:04:18.410 に答える
0

問題は、自動回転を使用すると、UI 全体 (私が信じている UIWindow インスタンスを含む) が回転することです。

この時点でナビゲーション コントローラーにプッシュされたものはすべてランドスケープで実行されます。

したがって、イメージビューをプッシュすると、まさにそれが得られます。

これを機能させるには、次のいずれかを行う必要があります。

  1. ルート ビューの回転を手動で処理する (変換を使用)
  2. 変換を使用して、-PI/2 でイメージ ビューの回転を解除します。

いずれにしても、これを機能させるには手動で変換を実行する必要があります。

余談ですが、これは UI 設計が悪い可能性があります。ユーザーとして、ドリルダウンすると画像が右上に表示されることを期待します。ただし、これはアプリの正確なコンテキストを知らずに行われます。

于 2009-06-18T05:57:13.460 に答える