fin*_*tic 21 calayer uiview ios
我有一个自定义视图,它是一个子类UIView
.我在自定义视图中添加了一些子图层,但现在我想删除它们.
我试过这样做:
self.layer.sublayers = nil;
Run Code Online (Sandbox Code Playgroud)
但这会删除所有内容,包括视图的初始子图层.
有没有办法实现这个目标?或者我每次都必须重新初始化一个新的自定义视图?
注意:App在iOS 7及更高版本中运行.
谢谢!
Kir*_*nee 43
从超级图层中删除特定图层的另一种方法是在layer.name
属性中指定唯一的字符串.您可以在以后比较以识别并删除它.
for layer in sublayers {
if layer.name == "masklayer" {
layer.removeFromSuperlayer()
}
}
Run Code Online (Sandbox Code Playgroud)
小智 39
保持对添加的子图层的引用在不需要时从超级图层中删除子图层.
代码如下:
对象C:
[thesublayer removeFromSuperlayer]
Run Code Online (Sandbox Code Playgroud)
迅速:
thesublayer.removeFromSuperlayer()
//thesublayer is the name of the layer you want to remove
Run Code Online (Sandbox Code Playgroud)
Van*_*nya 13
保持引用并不酷,在某些情况下你可以使用
resultImageView.layer.sublayers?.filter{ $0 is CAShapeLayer }.forEach{ $0.removeFromSuperlayer() }
Run Code Online (Sandbox Code Playgroud)
或者通过使用 CALayer 更通用,它删除了所有内容
meo*_*w2x 12
我是在Swift 3中使用它做的popLast()
.
self.layer.sublayers?.popLast()
Run Code Online (Sandbox Code Playgroud)
首先,您应该为具有theLayer.name
属性的子图层添加一个名称
之后,您可以像这样扩展视图:
extension UIView {
func removeLayer(layerName: String) {
for item in self.layer.sublayers ?? [] where item.name == layerName {
item.removeFromSuperlayer()
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20112 次 |
最近记录: |