私は過去 3 日間、iOS-6 の自動回転の混乱を解明しようと試みましたが、解決策にたどり着いていません。
すべてのビューが回転するアプリ、または回転が完全に無効になっているアプリを用意するのは比較的簡単です。また、(必要に応じて) MPMoviePlayerViewController を使用すると、アプリで自動回転が無効になっていても自動回転します。
しかし、一部のビューが回転を許可され、他のビューが許可されていない条件付き自動回転を行うことは、とらえどころのないものです。条件付きの自動回転を実現できます (ルート ビュー コントローラーがトップ ビュー コントローラーに「相談」して、許可する回転を決定します) が、回転したビューを終了すると、前のビューが回転したままになります (以前は回転していなかった場合)。これは受け入れられません。
このナットを割った人はいますか?
(私が上司に言ったように、より広い視野が必要な場合は、プリンターに幅の広い用紙を入れてください。)
さらなる問題: 基本的な条件付きローテーションが機能するようになった後 (以下のコメントを参照)、「正しい間違った」状況でいくつかの画面が表示されることがわかりました。この回転できない画面で、「イントロ」を押して回転可能な画面に移動します。
回転可能な画面で回転させてから、回転させて元に戻します。戻るとこんな画面。
XIB ファイルは非常にバニラです。
誤った部分は、何らかの理由で垂直方向に約 4 倍に「増幅」される「Image View -- img_hea...」要素のようです。ビュー内の要素を移動/サイズ変更するロジックはなく (標準の UITableView のもの以外)、問題の UIImageView への参照はまったくありません。
NSLog を viewWillAppear に配置すると、UIImageView のサイズは最初は 320x44 ですが、回転した画面から戻ると 320x160 であることがわかります。
これは完全な Apple のバグのようです。
詳細: 問題の画面を回転可能にし、右/左に回転させると (縦向きに戻る)、画像が台無しになります。私は、iOS が回転して戻る前に画面に「戻る」と推測しています。興味深いことに、回転したビューでは UIImageView がまったく表示されず、NSLog で Y 次元がゼロになります。
また、気づけば、問題の画像に重なっていたラベルが、回転ビューと回転後のビューの両方で完全になくなっています。
OK: UIVIew 全体の「サブビューの自動サイズ変更」をオフにしました。これにより、正しく動作します。「Autoresize Subviews」XIB属性が不安定な動作を引き起こすことを発見したのはこれが2回目です。