2014-03-05 1 views
2

를 시청 한 후 프레임을 파괴 (나의의 UIViewController에서!) : 당신은 내가이 부분 beacause를의 VideoView를 지켜 보면서에 버튼을 추가 볼 수 있듯이MPMoviePlayerViewController는 상태 표시를 숨기고 같이 난 내 UIView의에 MPMoviePlayerViewController을 만들어

self.playButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 70, 125, 100)]; 
         [self.playButton setBackgroundImage:[UIImage imageNamed:@"video_play.png"] forState:UIControlStateNormal]; 
         [self.playButton addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside]; 


         self.playerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 

self.playerViewController.moviePlayer.fullscreen = NO; 
self.playerViewController.view.frame = CGRectMake(0, 0, 320, 200); 

[self.playerViewController.moviePlayer prepareToPlay]; 
self.playerViewController.moviePlayer.shouldAutoplay = NO; 
self.playerViewController.view.backgroundColor = [UIColor yellowColor]; 
[self addSubview:self.playerViewController.view]; 
[self.playerViewController.view addSubview:self.playButton]; 

} 

- (void)buttonPressed:(id)sender{ 
(NSLog(@"Click")); 

[self.playerViewController.moviePlayer setFullscreen:YES animated:YES]; 
[self.playerViewController.moviePlayer play]; 
} 

미리보기 여야하며 사용자가 버튼을 클릭하면 MPMoviePlayerViewController가 전체 화면에 애니메이션을 적용하고 재생을 시작해야하며 동영상이 끝나면 다시 미리보기로 이동해야합니다. 모든 지금까지 작동하지만, 나는이 문제를 가지고 :

첫 번째 문제 : 매번 난 내 상태 표시 숨겨진되고는 다음과 같습니다보기를 엽니 다

enter image description here

그래서 내가 설정

내 viewWillAppear 내의 UIViewController의 viewDidAppear : 바로이 작동하지만, 지금 상태 표시 줄이 숨겨져 도착 및

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

다시 나타납니다 보이는 추악한,이 문제를 해결할 수있는 기회?

두 번째 문제 :

내가 비디오가 전체 화면과 모든 것이 올바른 작동됩니다 사용자 정의 버튼을 클릭! 그러나 비디오의 완료 버튼을 누르면 모든 것이 미리보기 화면으로 돌아가고 다음과 같이 보입니다. StatusBar가 숨겨져 있고 탐색 표시 줄도 손상되어 있고 비디오 위에 검은 공간이 많이 있습니다. 문제는 무엇입니까?

enter image description here

답변

2

좋아 난 그 ​​조금 해키이 문제에 대한 해결책을 발견하지만, 다른 해결책을 발견.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    float delay = 0.1; 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    [UIApplication sharedApplication].statusBarHidden = NO; 
}); 

을하고 경우 사용자가 버튼을 다시 도청을 위해 내가 할 : 내의 ViewController에서 내가 할

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    [UIApplication sharedApplication].statusBarHidden = NO; 
} 
+0

내가 솔루션의 종류를 좋아한다. 그들은 일을하고 사용자의 관점에서 멋지게 보입니다. 코드가 좋지 않다고해도 코드는 중요하지 않습니다. –