如何知道要删除哪个子层?

How to know which subLayer to remove?

我有下面这行代码,旨在防止子图层显示在另一个 post 内容之上的问题。在用户退出 post 时调用此行被激活的方法。

newBaseP3FolderLayer.layer.sublayers?.remove(at: 1)

但现在,我认为由于这段代码,有些情况下另一个视频会突然覆盖所有其他图像。

我注意到只有当子层的数量为 14 时才会发生这种情况。(这对于高于此的数字也可能是正确的)在离开 post 时打印子层的数量时我注意到代码有效很好(对于 10 或 11 和 12 之类的值),直到子视图的数量达到 14。

我该如何解决这个问题?

这种方法会更好

for sublayer in sublayers {
    if sublayer.name == "yourLayerName" {
        sublayer.removeFromSuperlayer()
    }
}

在创建它时将 reference 存储到要删除的 layer 并使用该 reference 从其 superLayer 中删除 layer,即

var yourLayer: CALayer?

view.layer.sublayers?.forEach({ (layer) in
    if layer == yourLayer {
        yourLayer?.removeFromSuperlayer()
    }
})

如果您不想使用图层名称,请尝试记录此:

NSLog(@"%@",self.playerLayer.player.currentItem.asset);

您将看到以下内容:

AVURLAsset: 0x60000063bac0, URL = file:///Temp/Loops/088_JB_HD.mov

然后您可以确定资产的实际名称和 URL。