iOS - 如何在 Swift 中显示“AirPlay”弹出菜单?
Posted
技术标签:
【中文标题】iOS - 如何在 Swift 中显示“AirPlay”弹出菜单?【英文标题】:iOS - How can I display an 'AirPlay' popup menu in Swift? 【发布时间】:2017-07-03 06:39:58 【问题描述】:如何在我的 Swift 项目中显示 AirPlay 弹出菜单? (像 Spotify 这样的许多应用程序可以显示如下):
【问题讨论】:
看看在你的应用中添加一个“MPVolumeView”。您实际上并没有创建菜单,但是通过拥有该控件,它将允许用户在单击该菜单时看到该菜单。 【参考方案1】:毕竟似乎没有简单直接的方法可以让自定义按钮显示系统的 Airplay 菜单。
但是,@totiG 将我指向一个有趣的资源,我创建了一个脚本,该脚本在屏幕可见区域之外创建标准音量控制 a 模拟单击 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()
运行此代码后,会出现以下弹出菜单:
【讨论】:
使用这段代码我只得到了没有任何滑块或按钮的透明矩形。 @SergeyDi:我在上面添加了一个屏幕截图,以显示这段代码在我的环境中的作用。它对你来说不是一样的吗?你运行的是哪个 ios 版本?【参考方案2】:这是一个不得不使用 MPVolumeView 按钮的好方法。
-
创建一个 MPVolumeView,并将其隐藏在视图层次结构中的某处。
只要您想显示选择器:
[[UIApplication sharedApplication] sendAction:NSSelectorFromString(@"_displayAudioRoutePicker") to:myVolumeView from:myView forEvent:nil];
可选 3: 在 iPad 上,您需要传递 UIEvent 否则弹出框只会在屏幕顶部输入,并且看起来很奇怪。从- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
捕获事件并将其传递给我们的调用。
【讨论】:
我知道这有点晚了,但这是私有 API 吗? (如果我使用它,我的应用会被应用商店接受吗?)以上是关于iOS - 如何在 Swift 中显示“AirPlay”弹出菜单?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:如何在 UIViewController 中隐藏和显示按钮
如何使用 Swift 在 iOS 中显示从 HealthKit 中检索到的 HKDocumentSample?
如何在 UILabel 中显示名字?我正在使用 Firebase 和 Swift 开发 IOS 应用程序