Как мога да покажа изскачащо меню на 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;
и го предайте в нашето обаждане.