私のビデオ(AVPlayerインスタンス)は、開始するために小さな「最小化された」ウィンドウで再生されます。画面をタッチしてコントロールを表示し、ユーザーがステータスバーを覆うフルスクリーンに展開できるようにします。私はそのフルフレームのためにviewControllerにこれを与えています:
[[UIScreen mainScreen] bounds]
しかし、viewControllerは、最初にステータスバーを非表示にしても、ステータスバーがそこにあると見なします。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]
したがって、ビデオ画面は、見えないステータスバーの下の(0、statusBarHeight)から始まります。コントロールが表示された状態でデバイスを回転させた場合(ステータスバーが表示されます)、問題は解決しません。コントロールが非表示になっている(ステータスバーが表示されていない)ときにデバイスを回転すると、すべてが自動的に修正され、ビデオウィンドウは期待どおり(0,0)から始まります。
私の解決策は、フルスクリーンのビデオウィンドウを(0、-statusBarHeight)で開始し、コントロールなしで回転を監視してから、ビデオウィンドウを元に戻すことです。うん。
ビデオを最小化して元のサイズに戻すと、コントロールのない回転があった場合、ビデオウィンドウが(statusBarHeight)ピクセルだけ高くなりすぎます。
したがって、ビデオを最小化するときに、ビデオの「実際の」位置を(0、+ statusBarHeight)で修正する必要がある場合は、別のブール値を教えてください。ダブルヤック。
この時点でデバイスを回転させると、すべてが正常になります。ただし、代わりにビデオをすぐに最大化すると、フルスクリーンビデオが(statusBarHeight)ピクセルだけ高すぎます。トリプルヤック!
さて、より多くのブール値ですが、これはすべて、ビデオエンジンが別個のフレームワークであり、「制御アプリ」にも同様の問題があるという事実によって複雑になっています。AAH!
私はこれについて間違った方法で行っていますか?複雑すぎて壊れやすくなっています。私は(実際に他のアプリを見て)これが一般的な問題であることを知っています-同じ動作を示すアプリのリストがあります。もっと良い方法はありますか?