Ios AVPlayerLayer不会根据单元格的边界更改大小

Ios AVPlayerLayer不会根据单元格的边界更改大小,ios,swift,avfoundation,Ios,Swift,Avfoundation,我试图让AVPlayerLayer填满单元格空间,但通过设置frame属性,它并没有改变大小 在我的自定义单元格文件中: override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) let videoURL = NSURL(string: "https://clips.vorw

我试图让
AVPlayerLayer
填满单元格空间,但通过设置frame属性,它并没有改变大小

在我的自定义单元格文件中:

 override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)


    let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    let player = AVPlayer(url: videoURL! as URL)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = contentView.bounds;
    contentView.layer.addSublayer(playerLayer)
    player.play()
}
然后在我的
uitableviewcontroller
文件中:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "clipHomeCells", for: indexPath) as! ClipTableViewCell
    // Configure the cell...
    return cell
}
但看起来是这样的:


CALayer
对象在展开时不会自动调整大小以填充它们所属的视图。因此,该层仍然具有最初为其提供的相同帧。如果由于自动布局或
heightForRow(at:)
delegate方法,单元格大小稍后发生更改,则
CALayer
框架将不会更新以匹配


我过去处理这个问题的方法是创建一个自定义的
UITableViewCell
子类,该子类管理
CALayer
,并在
layoutSubviews()中适当调整其大小

CALayer
对象在展开时不会自动调整大小以填充它们所属的视图。因此,该层仍然具有最初为其提供的相同帧。如果由于自动布局或
heightForRow(at:)
delegate方法,单元格大小稍后发生更改,则
CALayer
框架将不会更新以匹配


我过去处理这个问题的方法是创建一个自定义的
UITableViewCell
子类,该子类管理
CALayer
,并在
layoutSubviews()中适当调整其大小

我也遇到了同样的问题,解决方法是使用UICollectionView,或者在这种情况下,如果videolayer的大小与cell.view相同,则可以在cellForRowAtIndexPath中使用playerLayer.frame=cell.bounds。

我也遇到了同样的问题,解决方案是改为使用UICollectionView,或者在这种情况下,如果videolayer的大小与cell.view相同,则可以在cellForRowAtIndexPath中使用playerLayer.frame=cell.bounds