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