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