我正在尝试为AVPlayerLayer的不透明度设置动画效果。这是我的功能:

@IBAction func boutonTapped(_ sender: UIButton) {
        if(paused){
            UIView.animate(withDuration: 5.0, animations: {
                self.avPlayerLayer.opacity = 1.0
            }, completion: nil)
            //avPlayer.play()
        }else{
            UIView.animate(withDuration: 5.0, animations: {
                self.avPlayerLayer.opacity = 0
            }, completion:nil)
            //avPlayer.pause()

        }
        paused = !paused
    }

启动了不透明度动画,但它的速度非常快(约0.5s)。我尝试将持续时间更改为10秒,并且动画是相同的

我试图在动画块内添加self.view.layoutIfNeeded()无效。

你有什么主意吗?谢谢 !

最佳答案

代替对opacityavPlayerLayer进行动画处理,请尝试对要添加alphacustomViewavPlayerLayer进行动画处理,即

@IBAction func boutonTapped(_ sender: UIButton) {
    UIView.animate(withDuration: 5.0) {
        self.customView.alpha = paused ? 1.0 : 0.0 //here...
        paused ? self.avPlayer.play() : self.avPlayer.pause()
    }
    paused = !paused
}

无需调用self.view.layoutIfNeeded()

10-02 20:50