AutoLayout を使用すると、ビュー (ボタン、画像など) を同じ場所に保持し、デバイスを回転させたときに 90 度回転させることはできますか?
たとえば、次の画像では、ビューは縦向き (エッジから同じ距離) に配置されたときとまったく同じままですが、横向きに回転しています。
AutoLayout を使用すると、ビュー (ボタン、画像など) を同じ場所に保持し、デバイスを回転させたときに 90 度回転させることはできますか?
たとえば、次の画像では、ビューは縦向き (エッジから同じ距離) に配置されたときとまったく同じままですが、横向きに回転しています。
提供した画像のビューを「まったく同じ場所にとどまる」と説明していますが、これは自動レイアウトと回転動作を誤解していると思います。2 つの例の間でレイアウトが大幅に変更されています。以前は両方のビューが左端に沿って配置されていましたが、現在は下端に沿って配置されています。
基本的に: デバイスを回転させると (たとえば、標準の縦向きから左向きの横向きに)、トップ ビューが指している方向ではなく、どのビューがトップになるかが変わります。
指定した回転したビューの外観を再作成する場合は、いくつかのオプションがあります。プログラムで制約を追加する良い方法である視覚的な書式設定言語を見ることをお勧めします...見た目よりも簡単です。適切な紹介が必要な場合は、WWDC 2012 の iOS 自動レイアウト トークをご覧ください。次に、デバイスが回転するときに適切な拘束を追加および削除できます。(少し遊んでみる必要があるかもしれません)。View Controller Programming Guide には、「カスタムの横向きの作成」に関するセクションもあり、参考になるかもしれません。
インターフェイスの向きを回転できるようにしている場合は、回転に関する制約を変更して、ビューを必要な場所に配置する必要があります。
インターフェイスの向きの回転を許可しない場合は、デバイスの向きの変更通知を購読する必要があります。向きが変わったら、ビューの変換を更新して回転させることができます。ビューが正方形であれば、それで十分です。ビューが正方形でない場合は、回転したフレームに基づいて制約を変更する必要もあります。