繁体   English   中英

如何让我的UIView使用我的自定义CALayer作为其后备层?

[英]How do I have my UIView use my custom CALayer as its backing layer?

我按照Apple的文档中的建议重写UIView的layerClass方法,如下所示:

+ (Class)layerClass {
     return [ViewLayerBase class];
}

在我的viewLayerBase自定义类中,我有一个像这样实现的init方法:

- (id)initWithRect:(CGRect)rect {
     if ((self = [super init])) {
         NSLog(@"I got called");
     }
     return self;
}

我的UIView子类显然没有调用此方法。 鉴于UIView的图层属性是只读的,我不能做myView.layer = [ViewLayerBase alloc] initWithRect...如何让UIView实例化我的自定义CALayer子类?

您正在这样做(向您的自定义UIView类添加一个layerClass类方法。)

问题是你的init方法。 对于CALayer,指定的init方法是init,而不是initWithRect。 尝试将代码移动到-init 这应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM