我需要在距离完成一秒后添加 a CABasicAnimation
(playerItem 的持续时间 - 1 AVPlayerLayer
)AVQueuePlayer
。playerItem
这是一个基本的交叉渐变。我似乎无法弄清楚如何判断我何时到达了正确的时间。使用下面的代码,我添加了一个周期性时间观察器。有什么方法可以知道我的 playerItem 何时结束一秒钟?
timeObserverToken = player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main) { [unowned self] time in
let fadeOutTime = CMTime(seconds: 1, preferredTimescale: time.timescale)
let duration = self.currentItem()?.duration
let convertedDuration = CMTimeConvertScale(duration!, time.timescale, .default)
if CMTimeCompare(time, CMTimeSubtract(convertedDuration, fadeOutTime)) == 0 {
self.playerLayer.add(self.fadeOut, forKey: "fadeOut")
}
}