2013-08-09 2 views
4

에서 MPMovieScalingModeFill에 종료 전체 화면 MPMoviePlayerController 세트 스케일링 모드 후 나는 MPmovieScalingmodefill에 mpmovieplayercontroller은 IOS 내 응용 프로그램에서

첫 세트 스케일링 모드와 scalingmode에 대한 올바른 디스플레이 비디오를 사용하여 비디오를 재생할 수 있습니다.

그런 다음 전체 화면으로 비디오를보고 전체 화면을 종료 한 후 확장 모드를 MPmovieScalingmode로 채우고 기본 모드로 비디오를 표시하십시오.

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(ExitFullScreen:) 
              name:MPMoviePlayerWillExitFullscreenNotification object:nil]; 

[appDelegate.moviePlayerController setContentURL:fileURL]; 

if ([appDelegate checkDevice]) 
{ 
    [appDelegate.moviePlayerController.view setFrame:CGRectMake(0,0, 320,463)]; 
} 
else 
{ 
    [appDelegate.moviePlayerController.view setFrame:CGRectMake(0,0, 320,375)]; 
} 


[appDelegate.moviePlayerController prepareToPlay]; 
appDelegate.moviePlayerController.scalingMode=MPMovieScalingModeFill; 
appDelegate.moviePlayerController.controlStyle=MPMovieControlStyleDefault; 
appDelegate.moviePlayerController.shouldAutoplay=NO; 
[appDelegate.moviePlayerController setFullscreen:YES animated:YES]; 
[appDelegate.moviePlayerController play]; 
[self.view addSubview:appDelegate.moviePlayerController.view]; 

- (void)ExitFullScreen:(NSNotification *)notification{ 
NSLog(@"Exit full Screen"); 
[appDelegate.moviePlayerController setControlStyle:MPMovieControlStyleEmbedded]; 
[appDelegate.moviePlayerController setScalingMode:MPMovieScalingModeFill];} 

재생 비디오 내 코드 아래

는 나의 probleem는 전체 화면 종료 후 확장 모드를 설정하거나 종료 화면 후 모드를 확장 변경하지 마십시오 어떻게?

나를 도와주세요.

감사합니다.

+0

해결 방법을 찾으셨습니까? 나는 fullscreen 모드가 끝난 후에도 채우기 모드에서 scaling 모드로 바뀐다는 것과 같은 상황에 빠져있다. – glogic

+0

누구든지이 문제를 해결할 수 있습니까? – Splendid

답변

0

"이상적인"솔루션이 아니지만 작동합니다! 기본적으로 전체 화면을 종료하면 MPMoviePlayerController 인스턴스가 모두 엉망이되어 MPMovieScalingModeFill에 대한 배율 속성을 재설정하면 어디서 언제든지 작업을 수행 할 수 있습니다 (모든 종류의 작업을 시도하고 1 시간 후에 포기) . 가장 쉬운 해결책은 MPMoviePlayerController를 제거하고 단순히 MPMoviePlayerController 전체 화면이 종료 될 때마다 새로운 인스턴스를 할당하는 것이다 (이상적이지,하지만 완전히 작동) :

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:NO]; 
    if (self.moviePlayer != nil) 
     [self.moviePlayer.view removeFromSuperview]; 
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL]; 
    self.moviePlayer.view.frame = CGRectMake(#, #, #, #); 
    self.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
    self.moviePlayer.shouldAutoplay = NO; 
    [self.moviePlayer setContentURL:self.videoURL]; 
    [self.moviePlayer prepareToPlay]; 
    [self.moviePlayer setScalingMode:MPMovieScalingModeFill]; 
    [self.view addSubview:self.moviePlayer.view]; 
} 

PS가 : 슈퍼의 viewDidAppear 전화하는 것을 잊지 또는 모든 고통을하지 마십시오 예측할 수없는 신체 상해의 종류 (iOS 개발에서 매우 흔한 실수)

+0

그렇다면 비디오 재생이 재설정되지 않습니까? –

+0

그게 문제라면 이전 무비 플레이어를 제거하기 전에 MPMoviePlayerController의 currentPlaybackTime 속성을 사용하고 setInitialPlaybackTime을 사용하여 새 MPMoviePlayerController를 해당 값으로 설정하십시오. – etayluz

0

나는 이것이 MPMoviePlayerScalingModeDidChangeNotification을 생성 할 것이라고 생각합니다.

[[NSNotificationCenter defaultCenter] addObserver:self 
       selector:@selector(movieScalingModeDidChange:) 
       name:MPMoviePlayerScalingModeDidChangeNotification 
       object:nil]; 

MPMoviePlayerScalingModeDidChangeNotification

동영상 플레이어의 크기 조절 모드가 변경되면 게시 됨. userInfo 사전이 없습니다. 크기 조정 모드는 프로그래밍 방식으로 또는 사용자 상호 작용 방식으로 변경할 수 있습니다. 무비 플레이어의 크기 조절 모드를 설정하거나 가져 오려면 scalingMode 속성에 액세스하십시오. 상태가 변경된 무비 플레이어는 알림과 연결된 객체로 사용할 수 있습니다.

+0

샘플 코드를 읽었습니까? 그들은 3 행에 알림을 등록합니다. – bdf

+0

업데이트 된 답변 확인 @bdf – codercat

관련 문제