我有一个UITableView
用于渲染包含 gif 的推文。这些是从 Twitter 作为 MP4 返回的,所以我使用AVPlayer
. 使用HanekeSwift
我正在缓存该项目,然后在 tableview 中播放它。我遇到的问题是,当 tableview 加载时屏幕上的任何推文都不会自动播放,我必须在它们播放之前将它们滚动出屏幕并重新打开。
我在以下函数中配置我的 AVPlayer
private func configureAVPlayer(url: URL) {
cache.fetch(URL: url).onSuccess { [weak self] stream in
guard let path = URL(string: DiskCache.basePath())?.appendingPathComponent("shared-data/original") else { return }
let cached = DiskCache(path: path.absoluteString).path(forKey: url.absoluteString)
let file = URL(fileURLWithPath: cached)
if !FileManager.default.fileExists(atPath: cached) {
try! stream.write(to: file, options: .atomicWrite)
}
self?.player = AVPlayer(url: file)
self?.player?.automaticallyWaitsToMinimizeStalling = false
self?.playerLayer = self?.avPlayerView.layer as? AVPlayerLayer
guard let player = self?.player else { return }
self?.playerLayer?.player = player
self?.player?.play()
}
}
遵循与此处描述的非常相似的内容
但是对我来说,单元格基本上是暂停的,直到我滚动为止。