0

ビューから MPMoviePlayerController を削除する必要があります。私はこれを試しました。

[moviePlayerController stop];
[moviePlayerController.view removeFromSuperview];

ビデオは停止しますが、ビューは削除されません。[moviePlayerController.view removeFromSuperview];うまくいかないと思います。何が原因でしょうか? この問題の解決策はありますか..?

ありがとう。

4

6 に答える 6

1

この問題は通常、プレーヤーの割り当てが解除されるために発生します。解決策は、プロパティ「strong」を使用して .h でプレーヤー インスタンスを宣言することです。

@property (nonatomic,strong) MPMoviePlayerController* mpController;
于 2014-10-20T12:49:04.553 に答える
1

ARCを使用しているという既知の問題があります.hにプレーヤーを追加する必要があります。これは、ローカルで宣言した場合でも解放されるためです。

@property (nonatomic, strong) MPMoviePlayerController* controller;

ビューを追加するには:

self.controller = [[MPMoviePlayerController alloc] initWithContentURL:YOURVIDEOURL];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:self.controller];

self.controller.controlStyle = MPMovieControlStyleDefault;
self.controller.shouldAutoplay = YES;

[self.view addSubview:self.controller.view];
[self.controller setFullscreen:YES animated:YES];

そして、ビューを削除するには:

- (void) moviePlayBackDidFinish:(NSNotification*)notification {

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{

    [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];

}

MPMoviePlayerController *player = [notification object];
[[NSNotificationCenter defaultCenter]
 removeObserver:self
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:player];

if ([player
     respondsToSelector:@selector(setFullscreen:animated:)])
{
    [player.view removeFromSuperview];
}
}
于 2013-05-14T20:42:00.513 に答える
0

dismissViewController:animatedを試してください:おそらくうまくいくでしょう。

于 2012-10-16T07:21:40.353 に答える
0

私にとっては、これらすべてを試しました: [moviePlayer stop]; [moviePlayer setContentURL:nil]; [moviePlayer.view removeFromSuperview]; moviePlayer = nil;

そして、何も機能しませんでした。MPMoviePlayerController が全画面表示になっていることが原因であることがわかりました。修正?

        [moviePlayer setFullscreen:NO animated:YES];
于 2013-04-18T12:33:27.690 に答える
0

完全にはわかりませんが、自動割り当て解除のためにムービープレーヤーが表示されないという問題があったため、設定するだけでよいと思いますmoviePlayerController = nil;

ビューが消えるかどうかは完全にはわかりませんが、試してみる価値はあります!

于 2012-10-16T07:15:40.170 に答える
0
[moviePlayerController stop];
[moviePlayerController setContentURL:nil];
[moviePlayerController.view removeFromSuperview];

これは私のプロジェクトでうまくいっています

于 2012-10-16T07:27:26.107 に答える