Mob*_*Dev 6 iphone mpmovieplayercontroller ios ios5
MPMoviePlayerController播放器在按下完成按钮后永久隐藏播放器控件.
我有一个带有moviePlayer.controlStyle = MPMovieControlStyleEmbedded的嵌入式播放器,当用户点击moviePlayerDidEnterFullscreen通知中的全屏模式时,我正在制作[moviePlayer setFullscreen:NO]; 并将播放器视频转换为横向模式
moviePlayer.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
Run Code Online (Sandbox Code Playgroud)
和设置
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
Run Code Online (Sandbox Code Playgroud)
然后,当我点击完成按钮并在moviePlayBackDidFinish中,我正在将视图转换回纵向模式并将controlStyle设置为Embedded.到目前为止它的工作正常.之后视频将暂停,当我点按播放按钮时,它开始播放,播放器将停留一段时间并永久隐藏.播放视频后播放器不再可见.我试图在延迟后将播放器控制设置为嵌入式.但没有任何工作.请帮忙解决这个问题.
此问题仅适用于iOS 6以下的版本
码
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayerDidEnterFullscreen:)
name:MPMoviePlayerDidEnterFullscreenNotification
object:nil];
if (mpVideoPlayerController)
{
[mpVideoPlayerController.moviePlayer pause];
[mpVideoPlayerController.moviePlayer stop];
}
mpVideoPlayerController = nil;
mpVideoPlayerController = [[VideoPlayerViewController alloc] initWithContentURL: theURL];
mpVideoPlayerController.moviePlayer.movieSourceType = liveStreaming ? MPMovieSourceTypeStreaming : MPMovieSourceTypeUnknown;
if ([mpVideoPlayerController.moviePlayer respondsToSelector:@selector(setAllowsAirPlay:)]) {
mpVideoPlayerController.moviePlayer.allowsAirPlay = YES;
}
[[mpVideoPlayerController.moviePlayer view] setFrame:viewInsetRect];
mpVideoPlayerController.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
mpVideoPlayerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
[viewController.view addSubview: [mpVideoPlayerController.moviePlayer view]];
[mpVideoPlayerController.moviePlayer play];
}
-(void) moviePlayerDidEnterFullscreen :(NSNotification*)notification {
[mpVideoPlayerController.moviePlayer setFullscreen:NO];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self performSelector:@selector(setControlStyleFullscreen) withObject:nil afterDelay:0.2];
[UIView animateWithDuration:0.3
animations:^{
mpVideoPlayerController.moviePlayer.view.transform = CGAffineTransformIdentity;
mpVideoPlayerController.moviePlayer.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
CGRect frame=[[UIScreen mainScreen] applicationFrame];
frame.origin.y=-20;
mpVideoPlayerController.moviePlayer.view.frame = frame;//CGRectMake(0.0, 0.0, 480.0, 300.0);
} completion:^(BOOL finished) {
}];
}
- (void) setControlStyleFullscreen
mpVideoPlayerController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
- (void) setControlStyleEmbedded
mpVideoPlayerController.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
- moviePlayBackDidFinish:
NSLog(@"moviePlayBackDidFinish:");
[self rotateToInterfaceOrientation:UIInterfaceOrientationPortrait frameForView:(viewController).videoContentView.frame];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[self performSelector:@selector(setControlStyleEmbedded) withObject:nil afterDelay:0.2];
Run Code Online (Sandbox Code Playgroud)
您的代码有问题并会触发这些MPMoviePlayerController错误。
一般来说,你不应该在 MPMoviePlayerController 上强制执行已经完成的事情。
- (void)moviePlayerDidEnterFullscreen :(NSNotification*)notification
{
//
//remove both lines from this notification handler
//
[mpVideoPlayerController.moviePlayer setFullscreen:NO];
[self performSelector:@selector(setControlStyleFullscreen) withObject:nil afterDelay:0.2];
[...]
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过检查当前模式来扩展 setControlStyleFullscreen / Embedded 实现。这可能看起来很奇怪,但确实有很大帮助。
- (void)setControlStyleEmbedded
{
if (mpVideoPlayerController.moviePlayer.controlStyle != MPMovieControlStyleEmbedded)
{
mpVideoPlayerController.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
}
}
- (void)setControlStyleFullscreen
{
if (mpVideoPlayerController.moviePlayer.controlStyle != MPMovieControlStyleFullscreen)
{
mpVideoPlayerController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |