MPVolumeView does not show route button on launch

后端 未结 1 1241
暖寄归人
暖寄归人 2020-12-11 11:04

iOS 9.1 - iPhone 6S

MPVolumeView\'s route button (airplay) is not showing when app launches even when there are wireless routes available.

I have tried query

相关标签:
1条回答
  • 2020-12-11 11:46

    As @kvr said, first test on hardware device

    Airplay route button appears when more than one route is available.

    Trick I found to show permanently Airplay Button is to hide MPVolumeView route button, remove user MPVolumeView user interaction and target the route button action with a UIButton Wrapper.

    var airplayRouteButton: UIButton?
    
    private func airPlayButton() -> UIButton {
        let wrapperView = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
        wrapperView.setImage(YOUR_AIRPLAY_IMAGE, for: UIControlState.normal)
        wrapperView.backgroundColor = .clear
        wrapperView.addTarget(self, action: #selector(PlayerView.replaceRouteButton), for: UIControlEvents.touchUpInside)
    
        let volumeView = MPVolumeView(frame: wrapperView.bounds)
        volumeView.showsVolumeSlider = false
        volumeView.showsRouteButton = false
        volumeView.isUserInteractionEnabled = false
    
        self.airplayRouteButton = volumeView.subviews.filter { $0 is UIButton }.first as? UIButton
    
        wrapperView.addSubview(volumeView)
    
        return wrapperView
    }
    
    @objc private func replaceRouteButton() {
        airplayRouteButton?.sendActions(for: .touchUpInside)
    }
    
    0 讨论(0)
提交回复
热议问题