我正在使用MPMoviePlayerViewController - 播放器控件设置为:MPMovieControlStyleFullscreen
我在使用MPMovieControlStyleFullscreen中的一些按钮时遇到问题:正向,反向和全屏(箭头指向对方的按钮)。
我想要删除前进,后退和全屏按钮,或者控制用户点按它们时的操作。
谢谢!
答案 0 :(得分:9)
无法自定义Apple提供的MPMovieControlStyle
值。您需要做的是关闭Apple控件(MPMovieControlStyleNone
),然后创建自己的自定义控件。 Apple可以将你自己的UIViews放入层次结构中,所以你可以开始使用这样的东西:
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: YOUR_URL];
moviePlayer.controlStyle = MPMovieControlStyleNone;
UIView *movieView = moviePlayer.view;
[movieView addSubview: _movieControlsView];
[movieView bringSubviewToFront: _movieControlsView];
之前在代码或IB中设置了_movieControlsView
。
在美学上,你可以做你想做的事,但我建议坚持使用看起来像Apple的选择,以免混淆用户。对于我刚刚完成的项目,我创建了一个透明按钮,与电影播放器的大小完全相同。单击按钮会使用我的自定义控件淡化底部的控制栏。如果未单击其中一个控件,则控制栏会在几秒钟后再次退出。
答案 1 :(得分:3)
首先,MPMoviePlayerController与MPMoviePlayer * View * Controller略有不同,因此在转换iOS 4.3+环境中构建的应用程序时,其中一些答案会导致问题。
我使用MPMoviePlayerController构建了一些应用程序,这些应用程序在iOS 3.2中构建时运行良好。当我使用XCode 3.2.6(iOS 4.3)重建它时,视频甚至不能在iPhone上播放。我自从修复了通过将MPMoviePlayerController实例添加到subView,然后在fullScreenMode中使用movplayer呈现模态(Player是UIViewController):
//from didSelectRowAtIndexPath
Vid *selected = [items objectAtIndex:position];
player = [[Player alloc] init];
movplayer = [[MPMoviePlayerController alloc] initWithContentURL:selected.vidURL];
movplayer.view.frame = player.view.bounds;
movplayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[player.view addSubview:movplayer.view];
[self presentModalViewController:player animated:YES];
[movplayer setFullscreen:YES animated:NO];
[movplayer play];
[player release];
//movplayer is released inside - (void)exitedFullscreen:(NSNotification*)notification
这是因为旋转时UINavigationBar被切断了一半。
当我进入应用程序的iPad版本时,模态选项在美学上不会起作用。在全屏模式下旋转时,它还有UISplitViewController导航条和工具栏的一半切断。所以我尝试实现MPMoviePlayerViewController而不是MPMoviePlayerController。通过此转换,XCode在尝试设置时给出了错误:
movplayer.controlStyle = MPMovieControlStyleEmbedded;
使用MPMoviePlayerViewController执行此操作的正确方法是:
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
当玩家被添加为子视图时,捏合手势将平滑地在fullScreen和parentView(player.view.bounds)的大小之间切换玩家,并保留父母的工具栏和导航栏。 / p>
//iPad version with a view (viewForMovie) inside the DetailViewController
movplayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[current vidURL]];
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
movplayer.view.backgroundColor = [UIColor clearColor];
movplayer.view.frame = viewForMovie.bounds;
[viewForMovie addSubview:movplayer.view];
因此,这两个示例显示了那些想要将iPhone或iPad应用程序转换为较新iOS版本的人的一些解决方法。
答案 2 :(得分:0)
尝试将MPMovieControlStyle
对象的MPMoviePlayerController
设置为MPMovieControlStyleNone