我正在开发支持视频播放的iPhone应用程序。我正在使用MPMoviePlayerController和自定义控件来播放视频。为此,我将MPMoviePlayerController的控件样式设置为MPMovieControlStyleNone。
我想为正在播放的视频支持AirPlay功能。根据文档,我们必须将MPMoviePlayerController的'allowsAirPlay'属性设置为YES以启用AirPlay功能。如果我使用带有自定义控件的MPMoviePlayerController,如何在播放器UI上显示AirPlay按钮?
我尝试了以下内容:
我没有相互给出MPVolumeView和MPMoviePlayerController的引用。 但是,如果MPMoviePlayerController的'allowsAirPlay'设置为YES,那么AirPlay按钮将显示在MPVolumeView上。 MPVolumeView和MPMoviePlayerController如何相关?请让我知道这两个独立创建的类之间的联系。
谢谢和问候, 迪帕
答案 0 :(得分:10)
由于MPMoviePlayerController仅允许您一次播放一个视频,因此MediaPlayer框架始终知道正在播放的视频。这就是MPVolumeView了解MPMoviePlayerController的方式。我没有正式的文档,但我认为它以这种方式融入框架。
由于可能会进行大量的检查和平衡(并且他们喜欢一致的用户界面),Apple只允许您使用他们的AirPlay按钮/ UI来使用此功能。但是,您可以将该按钮放在任何位置:
airplayButton = [[MPVolumeView alloc] init];
airplayButton.frame = CGRectMake(myX, myY, 40, 40);
[airplayButton setShowsVolumeSlider:NO];
[customPlayerControls.view addSubview:airplayButton];
我猜测宽度,高度为40,40,我确定它不正确,但是一旦我按下按钮就无所谓了。
答案 1 :(得分:2)
for (UIButton *button in volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
[button setImage:[UIImage imageNamed:@"custom-route-button.png"] forState:UIControlStateNormal];
[button sizeToFit];
}}
我认为这会对你有帮助。
答案 2 :(得分:2)
MPVolumeView具有隐藏音量滑块和显示“路线”按钮的属性。所以没有必要遍历隐藏事物的视图。
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:myContainerView.bounds] autorelease];
volumeView.showsVolumeSlider = NO;
volumeView.showsRouteButton = YES;
[myContainerView addSubview:volumeView];
AirPlay(路线)按钮的位置可能不是您所期望的,因此您可能需要稍微播放容器视图的框架以使其达到您想要的位置。
答案 3 :(得分:0)
答案是:你做不到。 iOS 4.3中没有官方方法为Airplay提供您自己的控件 - 如果您需要该功能,则需要使用标准控件。