1

カスタム MPMoviePlayer を作成しています。

全画面管理の場合、 は次のようにMPMoviePlayerController動作します。

- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated;

同じことをしたいのですが、UIViewController全体にUIView. ただし、を使用するUIViewController場合、方向は管理されません

私の現在のコード:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[[appDelegate window] addSubview:myViewController.view];

を使用して向きを管理したいと思いUIViewControllerます。

助けてくれてありがとう

4

2 に答える 2

1

setFullscreen:YES...そのインスタンスで使用するとMPMoviePlayerController、指定したビュー スタックの使用を停止し、代わりに (ウィンドウで直接) 独自のビュー スタックを使用します。

言い換えると;

MPMoviePlayerControllerview インスタンスは、フルスクリーン モードに切り替えられると、提供された親ビューに一貫して固執しません。これは、非フルスクリーン モードを使用している場合にのみ行われます。

この機能を回避するには、フルスクリーン モードと埋め込みモードを切り替える独自の手段を実装する必要があります。メジャーに聞こえますが、実際にはかなり些細なことです。

次のようなメソッドを viewController 内に作成するだけです。

以下は、次のことを前提としています。

  • あなたのviewControllerは画面全体を処理します
  • あなたのviewControllerにはCGRect、埋め込まれたメトリックを含むプロパティ(型付き)があります
  • MPMoviePlayerControllerそのviewController内のインスタンスが呼び出されますplayer

自分で実装できるアニメーションはスキップしました。このメソッド内でコントロール スタイルを切り替えて、元の動作を模倣することもできます。

- (void)setFullscreen:(BOOL)fullscreen
{
    if (fullscreen)
    {
        self.player.view.frame = self.view.bounds;
    }
    else
    {
        self.player.view.frame = self.embeddedPlayerFrame;
    }
}
于 2013-05-25T19:13:54.727 に答える
0

はい、できます !

My ViewController "myViewController" は、方向管理を使用してすべてのビューに追加されます。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIViewController *rootViewController = appDelegate.window.rootViewController;
[rootViewController presentViewController:myViewController animated:NO completion:nil];
于 2013-06-11T10:59:16.457 に答える