ios – Swift:删除图层,而不删除UITableViewCell中的UIView

前端之家收集整理的这篇文章主要介绍了ios – Swift:删除图层,而不删除UITableViewCell中的UIView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有UITableViewCell和UIView.
我做了一些CABasicAnimation并将它附加到新的CAShapeLayer,然后我将这个图层添加到我的UITableViewCell中的超级图层:
self.layer.addSublayer(myLayer!)

除了myLayer(和他的动画)显示在我的UIView之上之外,一切都很好.
我希望那个标签在UIView下面.

我通过以相同的方式添加我的UIView层来实现这一点:

self.layer.addSublayer(myViewLayer!)

在这种情况下,我的UIView图层位于带有动画的CAShapeLayer的顶部.

但我有一个问题,我需要删除UIView层 – myViewLayer,因为它在滚动时违反了UIView的宽度.

当动画完成后,我需要删除图层,我可以毫无困难地删除CAShapeLayer – myLayer.

myLayer?.removeFromSuperlayer()

但是当我尝试对myViewLayer做同样的事情时,我的UIView也被删除了.但我不希望这样,我需要在屏幕上和我的视图层次结构中使用我的UIView.

我不明白为什么,如果看看self.layer.sublayers我看到这个(在添加图层之前):

[<CALayer: 0x7fd1f0d4fe40>,<CALayer: 0x7fd1f0ddc950>]

完成动画并移除myLayer后:

[<CALayer: 0x7fd1f0d4fe40>,<CALayer: 0x7fd1f0ddc950>,<CAGradientLayer: 0x7fd1f0de3660>]

正如你所看到的,CAGradientLayer是我的UIView层.所以,在我手动将其添加到子图层数组之前,我还没有.我如何删除它,而不删除我的UIView?

或者如何在UIView下面添加myLayer?

编辑

简而言之,我在动画之前有这个图层层次结构:

[<CALayer: 0x7fd1f0d4fe40> <- (I think this is UITableViewCell layer),<CALayer: 0x7fd1f0ddc950> <- (then,this is UITableViewCell content view layer)]

同时,我有这个视图层次结构:

UITableViewCell – >内容视图 – >的UIView

我需要在UIView下面添加带动画的新图层(我希望UIView部分覆盖带动画的新图层).我怎么能这样做?

我在UITableView图层层次结构中没有我的UIView图层,所以我不能只使用addLayer添加带动画的图层:下面:依此类推.

解决方法

我发现了这个问题.我犯了一个简单的错误.我使用了self.layer.sublayers,但我必须使用self.contentView.layer.sublayers这是我的错误.

当我发现这一点时,我能够修复另一个问题并使用addLayer:下面:

因此,如果您没有看到必须位于对象子层中的图层,则意味着您在错误的位置查看它也可以找到它,就像在UITableView中一样,您需要使用contentView.

猜你在找的iOS相关文章