2011-01-24 5 views
0

私はMPMoviePlayerControllerのフレームを設定しようとしています。しかし、アプリはiOS 3.1.3のplayer.view.frame = CGRectMake (0,0,480,320);行でクラッシュしていますが、iOS 3.2以上で正常に動作します。何が問題なのでしょうか?iOS 3.1.xのMPMoviePlayerControllerのフレームを設定します

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"aVideo.mp4" ofType:@""]]; 
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 

    // Register to receive a notification when the movie has finished playing. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackDidFinish:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 

    moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 

    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) { 
     // Use the new 3.2 style API 
     moviePlayer.repeatMode = YES; 
     moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 
     moviePlayer.shouldAutoplay = YES; 
     [self.view addSubview:moviePlayer.view]; 
    } 
    else { 
     Use the old 2.0 style API 
     moviePlayer.view.frame = CGRectMake (0,0,480,320); 
     [self.view addSubview: [moviePlayer view]]; 
     moviePlayer.movieControlMode = MPMovieControlStyleDefault; 
     [moviePlayer play]; 

    } 
} 

答えて

2

MPMoviePlayerControllerリファレンスは、iOS3.2以降ではviewプロパティが利用可能であることを明確に示しています。

view

映画コンテンツ とコントロールを含むビュー。 (読み取り専用)

@property (nonatomic, readonly) UIView *view

ディスカッション

をこのプロパティには、ビューは、映像コンテンツを提示するため を使用含まれています。この ビューには、すべての背景、 コンテンツ、および制御が組み込まれており、 映画が表示されます。 このビューを独自のビュー 階層に組み込むことも、それ自体で表示コントローラを使用して 表示することもできます。

ビューを独自のビュー の階層に埋め込むには、サブビューとしてサブビューとして追加して、既存のビューの1つを にします。これを行うための良い 場所は、ビュー ビューを表示するカスタムビュー コントローラのloadViewまたは viewDidLoadメソッドにあります。 ビューのフレーム矩形を自由に変更して、ビュー の利用可能な領域の に対応することができます。ムービープレーヤでは、scalingModeプロパティの の値を使用して ムービーコンテンツを、指定した フレームに一致するように調整します。

あなたは でビューを提示したい場合は、既存のビュー階層 - あなたは に MPMoviePlayerViewControllerクラスのインスタンスを使用することができ、それに を埋め込むことなく、ある自体ビューのプレゼンテーションを管理します。 そのクラスは ムービープレーヤコントローラで直接動作し、 ビューを単独で表示します。

このプロパティ のビューにサブビューを追加できます。カスタム 再生コントロールを表示するか、 アプリケーションに関連するその他のカスタム コンテンツを追加する場合は、 ケースでこれを行うことがあります。

可用性

    のiOS 3.2で利用可能
  • 以降。

とiOS 3.1のiOS 3.1以前で

のiOS 3.1での動作およびそれ以前

ため、このクラス は唯一のフルスクリーンムービープレーヤー を実装しました。ムービープレーヤー を作成し、それを単一の ムービーファイルで初期化した後、再生方法 を呼び出してムービーを提示しました。 (演劇メソッドの定義 はそれ以来、このクラスの と MPMediaPlaybackプロトコルにして移動した。)映画 選手オブジェクト自体は、映画 コンテンツの 実際のプレゼンテーションを処理していました。

1

どのようなクラッシュですか?例外がスローされますか?

+0

うん... SIGABRT NSObjectのは、私はフレームを設定する行の後にセレクタを認識しません。 – Nithin

+0

上記のコードを投稿できますか?セレクタ?ありがとう。 –

+0

コードを再編集として質問に追加しました。 – Nithin

1

view iOS 3.2以降でのMPMoviePlayerControllerが利用可能です。

関連する問題