我正在寻找能够在层次结构中搜索唯一CALayer的一般方法,而不必记住层在层次结构中的位置(并使用子层:和superlayer:方法).
我知道UIViews可以实现这一点(这使得查看视图变得容易)但CALayer有可能吗?
预先感谢您的帮助
Peyman的
小智 56
您还可以使用CALayer的name属性.
[layer setName:@"myKey"];
Run Code Online (Sandbox Code Playgroud)
要查一查,
- (CALayer *)myLayer {
for (CALayer *layer in [superLayerOfMyLayer sublayers]) {
if ([[layer name] isEqualToString:LabelLayerName]) {
return layer;
}
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
Pey*_*man 23
道歉.我是个笨蛋.CALayer是一个符合键值编码的容器,因此我可以在任何实例中创建任意值(包括标签).例如,要创建标记,我们执行以下操作:
[rootLayer setValue:[NSNumber numberWithInt:101] forKey:@"PFtag"];
Run Code Online (Sandbox Code Playgroud)
谢谢
在Swift中你可以做到这一点
let layer = CAShapeLayer()
layer.name = "\(index)"
Run Code Online (Sandbox Code Playgroud)
然后要获得图层,您可以执行此操作
for item in self.layer.sublayers! {
if item.name == "\(index)" {
item.removeFromSuperlayer()
item.removeAllAnimations()
}
}
Run Code Online (Sandbox Code Playgroud)
现代安全的解决方案。
为图层指定名称:
layer.name = "MyLayer"
Run Code Online (Sandbox Code Playgroud)
然后,过滤所有子层以搜索名称:
layer.sublayers?
.filter { layer in return layer.name == "MyLayer" }
.forEach { layer in
layer.removeFromSuperlayer()
layer.removeAllAnimations()
}
Run Code Online (Sandbox Code Playgroud)