以下是使用AVPlayer实现淡入效果的示例代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var avPlayer: AVPlayer?
override func viewDidLoad() {
super.viewDidLoad()
// 创建AVPlayerItem
let videoURL = Bundle.main.url(forResource: "video", withExtension: "mp4")
let playerItem = AVPlayerItem(url: videoURL!)
// 创建AVPlayer
avPlayer = AVPlayer(playerItem: playerItem)
// 创建AVPlayerLayer
let playerLayer = AVPlayerLayer(player: avPlayer)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
// 添加通知监听,监听播放结束事件
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
// 播放视频
avPlayer?.play()
// 设置音量为0
avPlayer?.volume = 0
// 开始淡入动画
UIView.animate(withDuration: 1) {
self.avPlayer?.volume = 1
}
}
@objc func playerDidFinishPlaying() {
// 循环播放视频
avPlayer?.seek(to: CMTime.zero)
avPlayer?.play()
}
}
上述代码中,首先我们创建了一个AVPlayer和一个AVPlayerLayer,并将AVPlayerLayer添加到视图的layer中以显示视频。然后我们设置AVPlayer的音量为0,通过使用UIView.animate方法,将音量从0渐变到1,从而实现了淡入效果。
另外,我们还添加了一个通知监听,当视频播放结束时,会自动循环播放视频。在playerDidFinishPlaying方法中,我们将播放时间设置为0,并重新开始播放视频。