使用 AVRoutePickerView,我可以在点击 Airplay 图标时以编程方式执行 Airplay。 现在我想要,在 viewDidLoad 上它应该初始化 AVRoutePickerView 甚至点击播放图标(无需手动点击图标)。
这是我在 UIView 上显示 Airplay 图标的一小段代码
让routePV = AVRoutePickerView(frame: CGRect(x: 30.0, y: 150.0, 宽度:30.0,高度:30.0)) 路线PV = UIColor.clear
self.view.addSubview(routePV)
我真的不确定如何触发 viewdidload 上的点击?
谢谢
这是可能的。但我必须警告,在没有用户交互的情况下呈现此界面可能会出现非常意外的行为。我建议仅将其作为用户打算呈现此界面的直接结果。
确保您已将其添加到视图层次结构中。
let routePickerView = AVRoutePickerView()
view.addSubview(routePickerView)
如果需要,您可以隐藏它。
routePickerView.isHidden = true
然后要呈现路线选择器界面,请在其
touchUpInside
上触发UIButton
:
if let routePickerButton = routePickerView.subviews.first(where: { $0 is UIButton }) as? UIButton {
routePickerButton.sendActions(for: .touchUpInside)
}
请注意,这可能会在未来的 iOS 版本中停止工作。
我更喜欢使用扩展:
fileprivate extension AVRoutePickerView {
func present() {
let routePickerButton = subviews.first(where: { $0 is UIButton }) as? UIButton
routePickerButton?.sendActions(for: .touchUpInside)
}
}
实现示例:
class RandomViewController: UIViewController {
...
private lazy var routePickerView = {
let routePickerView = AVRoutePickerView(frame: .zero)
routePickerView.isHidden = true
view.addSubview(routePickerView)
return routePickerView
}
...
@IBAction func presentPickerView(_ sender: UIButton) {
routePickerView.present()
}
}
上面的片段对我有用。 但是
routePickerView.present()
给出了错误。
如果出现错误,请将其替换为 routePickerView().present()
谢谢。