如何在 Swift 5 中向应用程序添加 AirPlay 按钮

Yog*_*tel 2 avaudioplayer ios airplay swift swift5

我想实现一个 Airplay 按钮,显示蓝牙、iPhone 选项,就像在 iPhone 音乐应用程序中我们单击 Airplay 一样。我编写了一些代码,但遇到了一些问题。

  1. 当我实现时,MPVolumeView 工作正常,但无法更改按钮颜色。我检查了色调颜色但不起作用
  2. 添加了 AVRoutePickerView 的代码,它不起作用它不会触发,因此它不会显示 AirPlay 弹出视图
  3. 我想在单击 UIButton 时显示此 Airplay 弹出视图,但我找不到任何与此相关的解决方案,因此我采用 UIView 。

有一些链接适用于某些要点,但不适用于整个事情

自定义视图上的 AirPlay 按钮

https://developer.jwplayer.com/jwplayer/docs/ios-add-an-airplay-button-to-an-app

iOS - 如何在 Swift 中显示“AirPlay”弹出菜单?

请检查下面的屏幕截图以获取更多信息。

在此输入图像描述

请检查代码

import UIKit
import MediaPlayer
import AVKit

class TempDemoViewController: UIViewController {
    @IBOutlet weak var airPlayView: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupAirPlayButton()
    }
    
    func setupAirPlayButton() {
        var buttonView: UIView = UIView()
        let buttonFrame = CGRect(x: 0, y: 0, width: 50, height: 50)
                
        if #available(iOS 11, *) {
            let routerPickerView = AVRoutePickerView(frame: buttonFrame)
            buttonView.addSubview(routerPickerView)
            
            routerPickerView.tintColor = UIColor(named: "PrimaryColor")
            routerPickerView.activeTintColor = .white
            routerPickerView.prioritizesVideoDevices = true
        }else{
            let airplayButton = MPVolumeView(frame: buttonFrame)
            airplayButton.showsVolumeSlider = false
            buttonView = airplayButton
        }
        airPlayView.addSubview(buttonView)
    }
    
}
Run Code Online (Sandbox Code Playgroud)

Jin*_*Gor 7

override func viewDidLoad() {
     super.viewDidLoad()
     setAirplayButton()
  } 
    
 func setAirplayButton(){
    let buttonView  = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
    let routerPickerView =  AVRoutePickerView(frame: buttonView.bounds)       
     routerPickerView.tintColor = UIColor.green
     routerPickerView.activeTintColor = .white
     buttonView.addSubview(routerPickerView)
     self.airPlayView.addSubview(buttonView)
  }
Run Code Online (Sandbox Code Playgroud)

注意:airPlayView 是我在故事板中添加的 UIView。