Ios 在tableView中有多个视频?
我有一个包含多个视频的UITableView。我知道在UIView中只能有一个MPMoviePlayerController,所以我选择了AVPlayer选项,但有两个问题: 1.当我为特定单元格更改播放器项目时,所有单元格中的项目都会更改。我想有不同的视频在不同的细胞。以下是我每个单元格的代码:Ios 在tableView中有多个视频?,ios,objective-c,swift,avplayer,Ios,Objective C,Swift,Avplayer,我有一个包含多个视频的UITableView。我知道在UIView中只能有一个MPMoviePlayerController,所以我选择了AVPlayer选项,但有两个问题: 1.当我为特定单元格更改播放器项目时,所有单元格中的项目都会更改。我想有不同的视频在不同的细胞。以下是我每个单元格的代码: let urlFromParse = NSURL(string: lVideo.url!) var asset = AVURLAsset(URL: u
let urlFromParse = NSURL(string: lVideo.url!)
var asset = AVURLAsset(URL: urlFromParse, options: nil)
var playerItem = AVPlayerItem(asset: asset)
self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
var layer = AVPlayerLayer(player: self.moviePlayerSunday)
layer.frame = cell.addVideoView.bounds
layer.backgroundColor = UIColor.blackColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
layer.needsDisplayOnBoundsChange = true
self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
cell.addVideoView.layer.addSublayer(layer)
let urlFromParse = NSURL(string: lVideo.url!)
var asset = AVURLAsset(URL: urlFromParse, options: nil)
var playerItem = AVPlayerItem(asset: asset)
self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
var layer = AVPlayerLayer(player: self.moviePlayerSunday)
layer.frame = cell.addVideoView.bounds
layer.backgroundColor = UIColor.blackColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
layer.needsDisplayOnBoundsChange = true
self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
cell.addVideoView.layer.addSublayer(layer)
我将感谢任何帮助。谢谢大家! let urlFromParse = NSURL(string: lVideo.url!)
var asset = AVURLAsset(URL: urlFromParse, options: nil)
var playerItem = AVPlayerItem(asset: asset)
self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
var layer = AVPlayerLayer(player: self.moviePlayerSunday)
layer.frame = cell.addVideoView.bounds
layer.backgroundColor = UIColor.blackColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
layer.needsDisplayOnBoundsChange = true
self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
cell.addVideoView.layer.addSublayer(layer)
关于你的第一点:
如果我没记错的话,您正在使用self.moviePlayerSunday来显示您的视频。然后对所有单元格使用相同的player实例。
为每个需要有自己播放器的单元格实例化一个新的
let urlFromParse = NSURL(string: lVideo.url!)
var asset = AVURLAsset(URL: urlFromParse, options: nil)
var playerItem = AVPlayerItem(asset: asset)
self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
var layer = AVPlayerLayer(player: self.moviePlayerSunday)
layer.frame = cell.addVideoView.bounds
layer.backgroundColor = UIColor.blackColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
layer.needsDisplayOnBoundsChange = true
self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
cell.addVideoView.layer.addSublayer(layer)
关于你的第二点:
AVPlayer直接播放视频。您必须创建播放/暂停/等。。按钮您自己请发布您的单元格创建代码。是的,我使用的是相同的代码,因为当我为单元格内的每个单元格创建一个新代码时,它甚至没有显示出来。
let urlFromParse = NSURL(string: lVideo.url!)
var asset = AVURLAsset(URL: urlFromParse, options: nil)
var playerItem = AVPlayerItem(asset: asset)
self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
var layer = AVPlayerLayer(player: self.moviePlayerSunday)
layer.frame = cell.addVideoView.bounds
layer.backgroundColor = UIColor.blackColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
layer.needsDisplayOnBoundsChange = true
self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
cell.addVideoView.layer.addSublayer(layer)