これは私を少し混乱させています。この質問ではapplicationFrameを使用し、これはboundsを使用するように、画面のサイズに関する UIScreen の 2 つのプロパティを知っています。
- applicationFrame - デバイスのサイズから statusBar を引いたものを表示します。iPhone で NSLog を作成すると、次の値が得られます: (x=0、y=20、高さ = 460、幅 = 320)
- 境界 - すべてのサイズの画面を表示します。値は次のとおりです: (x=0、y=0、高さ=480、幅=320)
ここで、デバイスを回転させると (ポートレイトからラドスケープへ)、これが表示されます (境界はすべて同じ値になります)。
- 関数に移動: shouldAutorotateToInterfaceOrientation : x= 0 y=20 高さ= 460 幅= 320
- YES を返す
- Go 関数: didRotateFromInterfaceOrientation : x= 20 y=0 高さ = 480 幅 = 300
- 理由はわかりませんが、これはshouldAutorotateToInterfaceOrientationでもう一度渡し、次を表示します: x= 20 y=0 height= 480 width= 300 (これはバグですか?)
ビューのサイズをこの新しいサイズに変更したいのですが、CGRect を取得すると、didRotateFromInterfaceOrientation で正しいサイズが得られ、高さが幅になり、逆もまた同様です。
この値を手動で設定せずにビューのサイズを美しく変更する良い方法はありますか?