Поддержка AirPlay, отношение MPMoviePlayerController и MPVolumeView

Я разрабатываю приложение для iPhone, которое поддерживает воспроизведение видео. Я использую MPMoviePlayerController с настраиваемыми элементами управления для воспроизведения видео. Для этого я установил стиль управления MPMoviePlayerController в MPMovieControlStyleNone.

Я хотел бы поддержать функцию AirPlay для воспроизводимого видео. В соответствии с документацией мы должны установить для свойства 'allowAirPlay' MPMoviePlayerController значение YES, чтобы включить функцию AirPlay. Как я могу отображать кнопку AirPlay в пользовательском интерфейсе плеера, если я использую MPMoviePlayerController с пользовательскими элементами управления?

Я пробовал следующее:

  • Запрограммированный MPVolumeView
  • Установите showRouteButton и showVolumeSlider свойства MPVolumeView в НЕТ, чтобы скрыть ползунок громкости и кнопку маршрута.
  • Добавлен MPVolumeView на моем пользовательском проигрывателе Просмотр

Я не передавал ссылку MPVolumeView и MPMoviePlayerController друг другу. Но если "allowAirPlay" MPMoviePlayerController установлен в YES, тогда кнопка AirPlay отображается на дисплее MPVolumeView. Как связаны MPVolumeView и MPMoviePlayerController? Пожалуйста, дайте мне знать связь между этими двумя классами, которые создаются независимо.

Спасибо и с уважением, Deepa

Ответы

Ответ 1

Поскольку MPMoviePlayerController позволяет воспроизводить только одно видео за раз, среда MediaPlayer всегда знает видео, которое играет. Это как MPVolumeView знает о MPMoviePlayerController. У меня нет официальных документов, но я думаю, что это запекалось в рамки таким образом.

Поскольку существует, вероятно, много проверок и балансов (и они любят согласованные пользовательские интерфейсы), Apple позволяет использовать их кнопку/интерфейс для AirPlay для использования этой функции. Однако вы можете поместить эту кнопку там, где хотите:

airplayButton = [[MPVolumeView alloc] init];
airplayButton.frame = CGRectMake(myX, myY, 40, 40);
[airplayButton setShowsVolumeSlider:NO];
[customPlayerControls.view addSubview:airplayButton];

Я только догадывался о ширине, высота 40,40, и я уверен, что это не правильно, но как только я получил кнопку на месте, это не имело значения.

Ответ 2

for (UIButton *button in volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
    [button setImage:[UIImage imageNamed:@"custom-route-button.png"] forState:UIControlStateNormal];
    [button sizeToFit];
}}

Я думаю, это поможет вам.

Ответ 3

У MPVolumeView есть атрибут, чтобы скрыть ползунок объема и показать кнопку "Маршрут". Поэтому нет необходимости пересекать взгляды, скрывающие вещи.

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:myContainerView.bounds] autorelease];
volumeView.showsVolumeSlider = NO;
volumeView.showsRouteButton = YES;
[myContainerView addSubview:volumeView];

Размещение кнопки AirPlay (Route) может быть не таким, что вы ожидаете, поэтому вам может понадобиться немного посмотреть в кадре вида контейнера, чтобы получить его там, где вы хотите.

Ответ 4

Ответ: вы не можете. Нет официального метода iOS 4.3 для предоставления собственных средств управления Airplay - вам нужно использовать стандартные элементы управления, если вам нужна эта функциональность.