AVPlayerViewController
吗?UISlider
值更改来刷新速度?答案 0 :(得分:0)
- 我们可以在
AVPlayerViewController
中添加自定义播放速度(0.5、1.0、1.5、2.0)控制吗?
您可以通过进行一些修改来向 AVPlayerViewController
添加自定义播放速度按钮。
在iOS 11中,即,您可以通过在“ 播放/暂停”按钮旁边添加控件来向AVPlayerViewController
添加按钮。该按钮具有一个可访问标识符,它将帮助您找到该控件。
因此,我所做的基本上是找到“ 播放/暂停”按钮,然后将“播放速度”按钮添加到“ 播放/暂停”按钮的超级视图中。
func findPlayPauseButton(view: UIView) -> UIView? {
if view.accessibilityIdentifier == "Play/Pause" {
return view
}
for subview in view.subviews {
if let result = findPlayPauseButton(view: subview) {
return result
}
}
return nil
}
guard let playerView = playerViewController?.view else {
return
}
guard let playPauseButton = findPlayPauseButton(view: playerView) else {
return
}
if let playerControlsView = playPauseButton.superview {
let playbackSpeedButton = UIButton(type: .system)
playbackSpeedButton.accessibilityIdentifier = "PlaybackSpeed"
playbackSpeedButton.setTitle("1 X", for: .normal)
playbackSpeedButton.addTarget(self, action: #selector(self.playbackSpeedButtonTapped), for: .touchUpInside)
playbackSpeedButton.translatesAutoresizingMaskIntoConstraints = false
playerControlsView.addSubview(playbackSpeedButton)
NSLayoutConstraint.activate([
playbackSpeedButton.heightAnchor.constraint(equalTo: playPauseButton.heightAnchor),
playbackSpeedButton.widthAnchor.constraint(equalToConstant: 50),
playbackSpeedButton.leadingAnchor.constraint(equalTo: playPauseButton.trailingAnchor, constant: 70),
playbackSpeedButton.bottomAnchor.constraint(equalTo: playPauseButton.bottomAnchor),
])
}
结果:
您可能知道,由于您会发现所有极端情况,因此存在很多缺点,即,您还需要注意情况,您需要检查该hack在每个新产品上是否仍然有效iOS版本等。如果您的应用支持iOS 10,则情况会有所不同,因为AVPlayerViewController
的UI在iOS 11中已更改。
- 有没有一种方法可以使用UISlider值更改来刷新速度速率?
是,只需添加一个UIButton
即可代替播放速度的UISlider
。
- 如果当前正在播放,我们可以更改播放速度吗?
是的,如果正在播放,则只需更改播放器的rate
属性:例如,更改为1.25 X => playerViewController.player?.rate = 1.25
。
要求增强!雷达号码是46022646:Playback speed control for AVPlayerViewController (Video)。