我正在网上挖掘,试图找到一些线索来实现这一目标,但没有成功。
我试图向用户显示像Waze这样的弹出窗口允许用户选择音频输出设备,音量等。
它似乎是一些API,因为它在iOS11上完全显示为声音小部件。
任何帮助表示感谢。
答案 0 :(得分:1)
对于像我这样苦苦挣扎的人,这里有一个潜在的解决方案。
我不知道是否有更好的解决方案。如果是,请分享。
我需要一个自定义按钮来制作完全相同的MPVolumeView路线按钮。所以我可以实现屏蔽原始按钮的相同效果和功能。
import UIKit
import MediaPlayer
class SelectAudioDeviceViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let avView = myView(frame: CGRect(x: 0, y: 0, width: 150, height: 50))
let button = UIButton(frame: CGRect(x: 50, y: 150, width: 150, height: 50))
avView.showsRouteButton = true
avView.showsVolumeSlider = false
avView.setRouteButtonImage(nil, for: .normal)
button.backgroundColor = UIColor.gray
button.setTitle("BLABLA", for: .normal)
button.addSubview(avView)
self.view.addSubview(button)
}
}
class myView: MPVolumeView {
override func routeButtonRect(forBounds bounds: CGRect) -> CGRect {
let newBounds = CGRect(x: 0, y: 0, width: 150, height: 50)
return newBounds
}
}
希望有所帮助
答案 1 :(得分:0)
另一个答案是AVRoutePickerView。有关更多信息,请参见documentation here。这也与您问题中的屏幕截图匹配。
答案 2 :(得分:0)
SWIFT5
使用iOS的AVRoutePickerView13>
import UIKit
import AVFoundation
import AVKit
let view = UIView(frame: UIScreen.main.bounds)
class ViewController: UIViewController {
var AirPlayButton : AVRoutePickerView!
override func loadView() {
let view = UIView(frame: UIScreen.main.bounds)
view.backgroundColor = .white
AirPlayButton = AVRoutePickerView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
view.addSubview(AirPlayButton)
self.view = view
let AirPlayButton = AVRoutePickerView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
view.addSubview(AirPlayButton)
}
}