2016-05-03 22 views
0

Ich benutze MPMoviePlayerController, um ein kleines Video als ein Intro-Video meiner App zu spielen. Ich habe den folgenden Code verwendet und das funktioniert gut. Aber das Video spielt weiter. Ende und startet erneut. Und selbst wenn ich auf die Schaltfläche "Fertig" klicke, wird die Superansicht nicht entfernt. Ich möchte auch, dass meine Statusleiste sichtbar ist und ich es durchscheinend immer noch nicht ergebnis. Ich habe auf Google und Stack Overflow gesucht aber immer noch keine Hilfe. Jede Hilfe wäre sehr spürbar.MPMoviePlayerController verhält sich nicht richtig

Ich habe [self playMovie] Methode in viewDidAppear

-(void)playMovie 
{ 
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"avc_intro" ofType:@"mp4"]]; 
moviePlayer = [[MPMoviePlayerController alloc] 
       initWithContentURL:url]; 

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

moviePlayer.controlStyle = MPMovieControlStyleDefault; 
moviePlayer.shouldAutoplay = YES; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer setFullscreen:YES animated:YES]; 
} 

- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{ 
MPMoviePlayerController *videoplayer = [notification object]; 
[[NSNotificationCenter defaultCenter] 
removeObserver:self 
name:MPMoviePlayerPlaybackDidFinishNotification 
object:videoplayer]; 

if ([videoplayer 
    respondsToSelector:@selector(setFullscreen:animated:)]) 
{ 
    [videoplayer.view removeFromSuperview]; 
} 
} 

Antwort

2

Bessere Nutzung this. Die MPMoviePlayerController genannt 9. in iOS formal veraltet

2

Anruf [self playMovie] von viewDidload weil viewDidAppear wieder aufgerufen, wenn Sie MPMoviePlayerController entfernen, so wird es wieder anfangen.

Update:

Sie MPMusicPlayerController präsentieren sollte statt hinzuzufügen Ansicht ist super Blick und dissmiss es auf Fertig

Hope this helfen :)

+0

Wenn ich es in ViewDidLoad aufrufen, spielt es nicht – iDeveloper

+0

Überprüfen Sie mein Update in Antwort – Lion

+0

Danke Kumpel :) @Lion – iDeveloper

0

Verwendung AVPlayerViewController und mein Code geben unten,

objective-c code: deklarieren AVPlayerViewController *playerViewController;

playerViewController = [[AVPlayerViewController alloc]init]; 
    playerViewController.view.frame = videoView.bounds; 
    [playerViewController.view setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; 
    playerViewController.player = [AVPlayer playerWithURL:[NSURL URLWithString:viewModel.videoUrl]]; 
    [videoView addSubview:playerViewController.view]; 
    [playerViewController.player play]; 
    playerViewController.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

Sie die Karkassen nicht vergessen unten,

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 
#import <AVKit/AVKit.h> 
#import <MediaPlayer/MediaPlayer.h> 
gegeben

Swift Code:

 let type : String! = "mp4" 
     let targetURL : String? = NSBundle.mainBundle().pathForResource("Official Apple MacBook Air Video YouTube", ofType: "mp4") 

     let videoURL = NSURL(fileURLWithPath:targetURL!) 


     let player = AVPlayer(URL: videoURL) 
     let playerController = AVPlayerViewController() 

     playerController.player = player 
     self.addChildViewController(playerController) 
     self.playView.addSubview(playerController.view) 
     playerController.view.frame = playView.bounds 

     player.play() 

Sie die Karkassen nicht vergessen sind unten angegeben,

import UIKit 
import AVKit 
import AVFoundation 
import MediaPlayer 

es funktioniert für mich und hoffe, es ist hilfreich