2015-01-13 3 views
2

MPMoviePlayerController을 사용하여 동영상을 표시하려고하는 iOS 앱이 있습니다. 코드는 매우 간단하며 모든 iOS 버전이 6.0 이상인 모든 기기에서 정상적으로 작동합니다.iOS 8 비디오 진행률 막대가 표시되지 않습니다.

하지만 문제는 iOS 8 및 8.1에서 동영상의 진행률 표시 줄이 아래 이미지와 같이 보이지 않습니다.

enter image description here

나는 이런 일이 나이 아이폰 OS 8 버그입니다 이유를 이해 해달라고.

좋습니다. 미리 감사드립니다.

답변

1

내가 여러 아이폰 OS 버전을 지원 내 애플 리케이션, 너무이 문제를했지만,이 문제가 실제로 8

내 코드가 MPMoviePlayerControllercontrolStyleMPMovieControlStyleEmbeddedMPMovieControlStyleNone 사이를 전환 iOS에서 만 볼이 트리거됩니다 UIDeviceOrientationDidChangeNotification을 사용하십시오. 프로그래밍 방식으로 플레이어를 회전시키고 응용 프로그램을 회전시키지 않는다는 것을 인정해야합니다. 이것은 아마도이 문제의 뿌리 일 것입니다. 컨트롤을 세로로 표시하고 가로로 숨 깁니다.

분명히 두 단계로 해결했습니다. 간단한 앱에서이 문제를 격리하지 않았으므로 솔루션이 모든 사람에게 정확하지 않은 경우 사과드립니다. 먼저

, 더러운 부분 이 문제가 발생할 모두에게 아마도 필요하지, 나는 플레이어 파단 중 일부는 가시성 또는 투명을 강제하기 위해, MPVideoPlaybackOverlayView보기 돌봐 구문 분석합니다.

// Helps to hide or show the controls over the player 
// The reason of this method is we are programmatically rotating the player view, while not rotating the application 
// On latest iOS, this leads to misbehavior that we have to take into account 
-(void)showMPMoviePlayerControls:(BOOL)show 
{ 
    self.player.controlStyle = (show ? MPMovieControlStyleEmbedded : MPMovieControlStyleNone); 
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8")) 
    { 
     // Workaround to avoid persistence of empty control bar 
     for(UIView *subView in self.player.backgroundView.superview.superview.subviews) 
     { 
      if ([subView isKindOfClass:NSClassFromString(@"MPVideoPlaybackOverlayView")]) { 
      subView.backgroundColor = [UIColor clearColor]; 
       subView.alpha = (show ? 1.0 : 0.0); 
       subView.hidden = (show ? NO : YES); 
      } 
     } 
    } 
} 

하지만 충분하지 않았습니다. 아마도 인물 사진 모드는 알림을 트리거하는 여러 방향 (UIDeviceOrientationPortrait, UIDeviceOrientationFaceUp, ...)을 가지고 있으므로 제어 스타일 변경 요청이 발생했기 때문일 수 있습니다.

는 그래서 두 번째 단계 내 수정의는 변경할 필요가 없다는 사실을 처리 할 수 ​​있었다 MPMoviePlayerControllercontrolStyle 우리는 올바른 화면 방향에 이미있는 경우.

// Set embedded controls only when there is a transition to portrait, i.e. if status bar was hidden 
if ([[UIApplication sharedApplication] isStatusBarHidden]) { 
    [self showMPMoviePlayerControls:YES]; 
    // and we show the status bar here 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 
} 

아마 여기에 포인트가 이미 설정되어있는 경우 우리가 controlStyle를 설정하지해야한다는 것입니다 : 나는 풍경에 숨길 나의 경우 이 솔루션은, 상태 표시 줄이 숨겨져 있는지 확인하는 것이 었습니다 원한 가치.

이 문제가 저를 위해 해결되면서, 나는 조사를 중단했습니다. 어쨌든 나는 아마 대부분의 경우에 더 간단하다고 가정합니다. 확실히 controlStyle이 잘못된 시간에 변경되거나 변경되었지만 이미 원하는 상태에 있다는 사실과 관련이 있습니다.

+0

@Johann .... 답장을 보내 주셔서 감사합니다 ....하지만 제 경우에는보기를 다시 그리는 데 문제가 있다는 것을 발견했습니다. 그래서 0.5 초 동안 비디오를 재생하기 전에 빈보기 컨트롤러를로드하고 제거했습니다. 그것 .... 그리고 일이 예상대로 일하고 있었다. – Avin

관련 문제