获取图层父视图的任何方法?

时间:2014-04-09 06:23:19

标签: ios view calayer

是的,你正确阅读"图层的父视图"。我不确定它是否正确使用,但我的意思是,我添加了一个图层作为视图的子图层。我想知道是否有任何方法可以从图层中获取视图。

3 个答案:

答案 0 :(得分:5)

这个问题很陈旧,但访问CALayer的父视图很简单:

layer.delegate

如果您查看调试器,您会看到delegate属性填充了Layer的UIView容器,如果没有,您可以递归检查,直到获得main {{ 1}}直接托管在视图中。

来源:https://developer.apple.com/documentation/quartzcore/calayer/1410984-delegate

答案 1 :(得分:1)

您可以使用KVC执行此操作。

UIView *View1=[UIView new];
View1.tag=1;
[View1.layer setValue:View1 forKey:@"LayerObject"];

UIView *View2=[UIView new];
View2.tag=2;
[View2.layer setValue:View2 forKey:@"LayerObject"];

NSLog(@"Your Layers superView = %@",[View2.layer.superlayer valueForKey:@"LayerObject"]);

这将返回图层的父视图。

答案 2 :(得分:0)

好的,所以如果你有一个常用的CALayer - 子类,你需要“调用视图”,那么我认为该视图需要符合协议为了使其正常工作。

在这种情况下,您需要使用KVC存储对图层中视图的引用:

[layer setValue:view forKey:MyViewKey];

MyViewKey可以声明为CALayer - 子类代码的一部分:

extern NSString * const MyViewKey;

将定义如下:

NSString * const MyViewKey = @"Hello Mum";