0

私のビデオ(AVPlayerインスタンス)は、開始するために小さな「最小化された」ウィンドウで再生されます。画面をタッチしてコントロールを表示し、ユーザーがステータスバーを覆うフルスクリーンに展開できるようにします。私はそのフルフレームのためにviewControllerにこれを与えています:

[[UIScreen mainScreen] bounds]

しかし、viewControllerは、最初にステータスバーを非表示にしても、ステータスバーがそこにあると見なします。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]

したがって、ビデオ画面は、見えないステータスバーの下の(0、statusBarHeight)から始まります。コントロールが表示された状態でデバイスを回転させた場合(ステータスバーが表示されます)、問題は解決しません。コントロールが非表示になっている(ステータスバーが表示されていない)ときにデバイスを回転すると、すべてが自動的に修正され、ビデオウィンドウは期待どおり(0,0)から始まります。

私の解決策は、フルスクリーンのビデオウィンドウを(0、-statusBarHeight)で開始し、コントロールなしで回転を監視してから、ビデオウィンドウを元に戻すことです。うん。

ビデオを最小化して元のサイズに戻すと、コントロールのない回転があった場合、ビデオウィンドウが(statusBarHeight)ピクセルだけ高くなりすぎます。

したがって、ビデオを最小化するときに、ビデオの「実際の」位置を(0、+ statusBarHeight)で修正する必要がある場合は、別のブール値を教えてください。ダブルヤック。

この時点でデバイスを回転させると、すべてが正常になります。ただし、代わりにビデオをすぐに最大化すると、フルスクリーンビデオが(statusBarHeight)ピクセルだけ高すぎます。トリプルヤック!

さて、より多くのブール値ですが、これはすべて、ビデオエンジンが別個のフレームワークであり、「制御アプリ」にも同様の問題があるという事実によって複雑になっています。AAH!

私はこれについて間違った方法で行っていますか?複雑すぎて壊れやすくなっています。私は(実際に他のアプリを見て)これが一般的な問題であることを知っています-同じ動作を示すアプリのリストがあります。もっと良い方法はありますか?

4

1 に答える 1

0

この問題を再現するための非常に単純なアプリを作成し、「テクニカル サポート インシデント」を使用して、Apple の開発者テクニカル サポートに問い合わせました。バグレポート (ID 12685127) を提出するようにアドバイスされました。彼らが言うには:

AVPlayer は間違いなくステータス バーを考慮していません。

残念ながら、あなたが現在行っているようにこれを修正する以外に、より良い解決策が見当たらない..

于 2012-11-12T21:27:47.883 に答える