Dim*_*lov 8 iphone calayer uiview ios swift
我有UITableViewCell UIView.我做了一些CABasicAnimation并将它附加到新的CAShapeLayer,然后我将这个图层添加到我的UITableViewCell中的超级图层:
self.layer.addSublayer(myLayer!)
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了myLayer(和他的动画)显示在我的上方UIView.我希望这个标签在下面UIView.
我通过UIView以相同的方式添加我的图层来实现此目的:
self.layer.addSublayer(myViewLayer!)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的UIView图层位于带有动画的CAShapeLayer的顶部.
但我有一个问题,我需要删除UIView层 - myViewLayer因为它在滚动时违反了UIView的宽度.
当动画完成后,我需要删除图层,我可以毫无困难地删除CAShapeLayer - myLayer.
myLayer?.removeFromSuperlayer()
Run Code Online (Sandbox Code Playgroud)
但是当我尝试做同样的事情时myViewLayer,我的UIView也被删除了.但我不希望这样,我需要在屏幕上和我的视图层次结构中使用我的UIView.
我不明白为什么,如果self.layer.sublayers我看到这个(在添加图层之前):
[<CALayer: 0x7fd1f0d4fe40>, <CALayer: 0x7fd1f0ddc950>]
Run Code Online (Sandbox Code Playgroud)
完成动画并移除myLayer后:
[<CALayer: 0x7fd1f0d4fe40>, <CALayer: 0x7fd1f0ddc950>, <CAGradientLayer: 0x7fd1f0de3660>]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,CAGradientLayer是我的UIView层.所以,在我手动将其添加到子图层数组之前,我还没有.我如何删除它,而不删除我的UIView?
或者如何在UIView下面添加myLayer?
编辑
简而言之,我在动画之前有这个图层层次结构:
[<CALayer: 0x7fd1f0d4fe40> <- (I think this is UITableViewCell layer), <CALayer: 0x7fd1f0ddc950> <- (then, this is UITableViewCell content view layer)]
Run Code Online (Sandbox Code Playgroud)
同时,我有这个视图层次结构:
UITableViewCell - >内容视图 - > UIView
我需要在UIView下面添加带动画的新图层(我希望UIView部分覆盖带动画的新图层).我怎么能这样做?
我在UITableView图层层次结构中没有我的UIView图层,所以我不能只使用动画添加动画addLayer:below:等等.
我发现了这个问题.我犯了一个简单的错误.我用过self.layer.sublayers,但我必须用self.contentView.layer.sublayers这是我的错.
当我发现这一点时,我能够解决另一个问题并使用addLayer:below:.
所以,如果你没有看到一个必须在你对象的子层中的图层,意味着你正在查看错误的地方,想想它可能在哪里而你会找到它,就像在UITableView中你需要工作一样with contentView.
| 归档时间: |
|
| 查看次数: |
8391 次 |
| 最近记录: |