MPMoviePlayerController を正しく使用するには、いつビデオを再生するか、ムービー プレーヤーの表示と非表示を処理する方法、およびいつ何かを表示するかを決定する必要があります。最後に、サンプル プロジェクトを使用してそれを行う方法の 1 つを説明します (下にスクロールするとダウンロード リンクが表示されます)。プロジェクトを自由に使用して、好みに合わせて変更してください。
最も重要な部分は、カスタム ビュー コントローラー (またはカスタム ビュー コントローラー内で使用されるカスタム クラス) のプロパティとして宣言し、MPMoviePlayerController
明示的に (またはビュー コントローラーを閉じるなどして暗黙的に) カスタムの割り当てを解除しないことです。クラス、カスタム ビュー コントローラー、またはMPMoviePlayerController
それらが完了するまで。
すべてのコードをアプリ デリゲートに配置することは、一般的に適切な設計ではありません。コードを広げて、モジュール化して読みやすくしたい。
付属の .xib を使用して、基本的な XCode プロジェクトから始めます。File > New > File
次に、左側から Cocoa Touch を選択し、Objective-C クラスを選択して、カスタム ビュー コントローラー (インターフェイス用の .h、実装用の .m、およびユーザー インターフェイス用の .xib ファイル) を作成します。[次へ] をクリックし、ファイルに名前を付けますMyMovieViewController
。「ユーザーインターフェイスにXIBを使用」ボックスにチェックを入れます。
次に、アプリ デリゲートを変更します。
AppDelegate.h で、カスタム ビュー コントローラーのプロパティを追加します。
@property (nonatomic, strong) MyMovieViewController
*myMovieViewController;
AppDelegate.m の -application:didFinishLaunchingWithOptions: 関数で、カスタム ビュー コントローラーを初期化しMyMovieViewController
、「ルート ビュー コントローラー」として初期化された UINavigationController を宣言します。
self.myMovieViewController = [MyMovieViewController alloc] initWithNibName:@"MyMovieViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myMovieViewController];
self.window.rootViewController = nav;
次に、アプリケーションのウィンドウのルート ビュー コントローラーをこの UINavigationController に設定します。ViewController で初期化された UINavigationController を「ルート ビュー コントローラー」として宣言します。アプリ デリゲートの関数の最後の行は、次のようになります。
[self.window makeKeyAndVisible];
さて、良いものに。これで、カスタム ビュー コントローラーができましたMyMovieViewController
。
でMyMovieViewController.h
、プロパティとしてMPMoviePlayerController
呼び出されるようにします。mpController
@property (nonatomic, strong) MPMoviePlayerController *mpController;
のviewDidLoadMyMovieViewController.m
関数で、 をインスタンス化しますmpController
。
NSString *urlString =@"..."; //your url here
NSURL *url = [NSURL URLWithString:urlString];
self.mpController = [[MPMoviePlayerController alloc] initWithContentURL:url];
MyMovieViewController
の xib に2 つのボタンを作成し、それらを -(IBAction)showControllerButtonPressed:(id)sender および -(IBAction)hideControllerButtonPressed:(id)sender にリンクします。どちらも .m ファイルに実装されています。
-(IBAction)showControllerButtonPressed:(id)sender に、次を追加します。
self.mpController.view.frame = CGRectMake(0,0,320,320); //your size here
[self.view addSubview:self.mpController.view];
[self.mpController prepareToPlay];
[self.mpController play];
これにより、正しいサイズが設定され、コントローラのビューがカスタム ビュー コントローラのビューのサブビューとして追加され、ムービーが準備されて再生されます。
-(IBAction)hideControllerButtonPressed:(id)sender に、次を追加します。
[self.mpController pause];
[self.mpController.view removeFromSuperview];
これにより、ビデオが一時停止し (オーディオとビデオの再生が停止します)、コントローラーのビューがカスタム ビュー コントローラーのビューから削除されます。
AppDelegateのルート ビュー コントローラーとして追加したため、プロパティmpController
はプログラムの存続期間中存続します。を表示して却下し、毎回ムービーをリロードする場合は、却下するときに = nil を設定する必要があります。MyMovieViewController
MyMovieViewController
UINavigationController
MyMovieViewController
mpController
mpController
ビューが表示されたり、消えたり、バックグラウンドになったりするときに、一時停止して再生するように指示することもできます。
MPMoviePlayerController
カスタム ビュー コントローラーのプロパティとしての を示すサンプル プロジェクトを次に示します。(注: このプロジェクトにはもう 1 つのビューコントローラーがあり、MPMoviePlayerController
.関連するクラスが割り当てられ、割り当て解除されます):ViewController
MyMovieViewController
MPMoviePlayerController
http://www.filedropper.com/examplemovie-xcode5-ios7