Поддержка 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 - вам нужно использовать стандартные элементы управления, если вам нужна эта функциональность.