iOS - 如何删除以前添加的UIView子图层

问题描述 投票:15回答:3

我有一个自定义视图,它是UIView的子类。我在自定义视图中添加了一些子图层,但现在我想删除它们。

我试过这样做:

self.layer.sublayers = nil;

但这会删除所有内容,包括视图的初始子图层。

有没有办法实现这个目标?或者我每次都必须重新初始化一个新的自定义视图?

注意:App在iOS 7及更高版本中运行。

谢谢!

ios uiview calayer
3个回答
34
投票

保持对添加的子图层的引用在不需要时从超级图层中删除子图层。

代码如下:

对象C:

[thesublayer removeFromSuperlayer]

迅速:

thesublayer.removeFromSuperlayer()

//thesublayer is the name of the layer you want to remove

33
投票

从超级图层中删除特定图层的另一种方法是在layer.name属性中指定唯一的字符串。您可以在以后比较以识别并删除它。

for layer in sublayers {
     if layer.name == "masklayer" {
          layer.removeFromSuperlayer()
     }
 }

9
投票

我使用popLast()在Swift 3中完成了它。

self.layer.sublayers?.popLast()
© www.soinside.com 2019 - 2024. All rights reserved.