Как я могу отобразить всплывающее меню AirPlay в моем проекте Swift? (Многие приложения, такие как Spotify, могут отображать его, как показано ниже):
iOS – Как отобразить всплывающее меню «AirPlay» в Swift?
Ответы (2)
В конце концов, кажется, что нет простого и простого способа заставить пользовательскую кнопку отображать системное меню Airplay.
Тем не менее, @totiG указал мне на интересный ресурс, и я создал скрипт, который создает стандартный регулятор громкости за пределами видимой области экрана и имитирует нажатие кнопки Airplay:
func showAirplay() {
let rect = CGRect(x: -100, y: 0, width: 0, height: 0)
let airplayVolume = MPVolumeView(frame: rect)
airplayVolume.showsVolumeSlider = false
self.view.addSubview(airplayVolume)
for view: UIView in airplayVolume.subviews {
if let button = view as? UIButton {
button.sendActions(for: .touchUpInside)
break
}
}
airplayVolume.removeFromSuperview()
}
После запуска этого кода появится следующее всплывающее меню:
Вот небольшой обходной путь для использования кнопки MPVolumeView.
- Создайте MPVolumeView и спрячьте его где-нибудь в иерархии представлений.
- Всякий раз, когда вы хотите отобразить средство выбора:
[[UIApplication sharedApplication] sendAction:NSSelectorFromString(@"_displayAudioRoutePicker") to:myVolumeView from:myView forEvent:nil];
Вариант 3. На iPad вам нужно будет передать UIEvent, иначе всплывающее окно будет просто введено в верхней части экрана, и оно будет выглядеть неуверенно. Захватите событие от - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
и передайте его в наш вызов.