【发布时间】:2015-08-14 09:20:46
【问题描述】:
我有带有UIView 的 UITableViewCell。
我做了一些 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:below: 等添加带有动画的层。
【问题讨论】:
标签: ios iphone swift uiview calayer