UIImagePickerController を使用して静止画像をキャプチャするプロジェクトを開始しました。オーバーレイとキャプチャしたばかりの画像との相互作用が不十分だったため、この単純なメカニズムの使用を断念しました。問題は次のとおりです。オーバーレイをアクティブにして写真をスナップすると、スナップしたばかりの画像が回転して、縦向きのアスペクト フィルが行われ、ユーザーに画像を使用または再撮影するオプションが表示されます。これが発生した場合、オーバーレイを閉じたり、新しい静止画像プレビューの向きに対応するようにオーバーレイを回転したりする方法はありません。良くない。
AV Foundation のさまざまなメカニズムを使用して、UIImagePickerController の静止画像キャプチャ動作を再実装することにしました。これは驚くほど簡単にセットアップできましたが、まだいくつかの問題が残っています。
1) 標準の UIImagePickerController で UI がどのように機能するかに似るように、メカニズムの方向を変更したいと考えています。このコントローラーでは、ご存じのとおり、携帯電話をどのように回転させても、ボタン バーは常に縦向きの下部に固定されたままです。このボタン バー内では、ボタン自体のグリフが回転しますが、それ以外はすべて固定されたままです。フラッシュ セット、カメラの切り替え、およびオプションのオーバーレイ コントロールは、再配置されます。これらの他の要素を回転させている間、このタブバーを固定したままにするにはどうすればよいですか? 特定の要素を回転から除外する方法はありますか?
2) 自動再配向を行う際に、AVVideoCaptureLayer を常にライブのままにして、画面全体を占有するようにします。デバイスが方向転換の回転を実行すると、このレイヤーのサイズが異常に大きくなり (縮小され)、ビデオ フィード自体が 90 度ずれます。したがって、明らかにこのレイヤーは回転していますが、全画面サイズにはなっておらず、ビデオ フィード自体が期待どおりに動作していません。ビデオを固定したままにして、完全な回転で全画面を占有し、回転中にプレビューのサイズを変更しないでください。しかし、特定の要素を再配置して、項目 1 のようにできるようにしたいです。
これを実現する方法を示すサンプル コードは大歓迎です。