3

ViewControllerにサブビューとしてMPMoviePlayerControllerビューを追加しました。

向きの変更中にサブビューのサイズを変更するためにlayoutSubviewsを使用しています。

映画をフルスクリーンで再生し、フルスクリーンのまま電話を回転させると、フルスクリーンを終了すると、ナビゲーションバーがステータスバーの途中で「非表示」になり、両方の原点がステータスと同じであるかのようになります。上のバー。

私は何か間違ったことをしているのだろうかと思っています...誰か助けてもらえますか?

ありがとう!

4

3 に答える 3

6

Appleのドキュメントから以下のnavigationBarのフレームを変更しないでください。

ナビゲーションコントローラーは、ナビゲーションバーとオプションのナビゲーションツールバーの作成、構成、および表示を管理します。ナビゲーションバーの外観関連のプロパティをカスタマイズすることは許可されていますが、フレーム、境界、またはアルファ値を直接変更しないでください。UINavigationBarをサブクラス化する場合は、initWithNavigationBarClass:toolbarClass:メソッドを使用してナビゲーションコントローラーを初期化する必要があります。ナビゲーションバーを表示または非表示にするには、navigationBarHiddenプロパティまたはsetNavigationBarHidden:animated:メソッドを使用します

https://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

今、私はこれを行い、それは完全に機能します:
1)ビューコントローラーの入り口で、映画プレーヤーの状態にオブザーバーとして自分自身を追加します

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerChangedState) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];

2)通知への応答:

// run this method on the main thread
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
    [self.navigationController setNavigationBarHidden:YES];
    [self.navigationController setNavigationBarHidden:NO animated:YES];

注:このコードはiOS 7で動作しますが、古いバージョンのiOSではテストしていません。

于 2014-01-15T09:16:43.220 に答える
3

答えを探している人のために、次のように、navigationController.navigationBarフレームの原点を0,20にリセットして修正しました。

self.navigationController.navigationBar.frame = CGRectMake(0, 20, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height);
于 2011-03-07T18:25:47.457 に答える
2

私は同様の問題を抱えていましたが、受け入れられた解決策は私を助けませんでした-助けになったのはこの投稿への答えでした:MPMoviePlayerControllerが閉じられた後に上部にステータスバーが消える

基本的に、[UIApplication sharedApplication] .statusBarHidden=NOを設定するために遅延呼び出しを追加する必要がありました。

(他の誰かがこの問題を抱えている場合に備えて、ここに投稿されています)

于 2011-09-12T02:01:38.930 に答える