使用AVRoutePickerView,我可以在点击Airplay图标时以编程方式执行Airplay。 现在,我想在viewDidLoad上初始化AVRoutePickerView,甚至点击airplay图标(无需手动点击图标)。
这是我的一小段代码,用于在UIView上显示Airplay图标
let routePV = AVRoutePickerView(frame:CGRect(x:30.0,y:150.0, 宽度:30.0,高度:30.0)) routePV = UIColor.clear
self.view.addSubview(routePV)
我真的不确定如何触发viewdidload上的点击吗?
谢谢
答案 0 :(得分:0)
这是可能的。但是,我必须警告,在没有用户交互的情况下呈现此界面可能是非常意外的行为。我只建议这样做,因为用户打算展示此界面。
确保已将其添加到视图层次结构中。
// in counterclockwise order :
static float triangleCoords[] = {
0.0f, 0.622008459f, 0.0f, // top
-0.5f, -0.311004243f, 0.0f, // bottom left
0.5f, -0.311004243f, 0.0f // bottom right
};
如果需要,可以将其隐藏。
let routePickerView = AVRoutePickerView()
view.addSubview(routePickerView)
然后显示路由选择器界面,在其routePickerView.isHidden = true
上触发touchUpInside
:
UIButton
请注意,这可能会在将来的iOS版本中停止工作。
答案 1 :(得分:0)
我更喜欢使用扩展名:
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()
}
}