我正在按照苹果公司的文档推荐使用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的layer属性是只读的,我无法做myView.layer = [ViewLayerBase alloc] initWithRect...
如何让UIView实例化我的自定义CALayer子类?
答案 0 :(得分:4)
您做得对(向您的自定义UIView类添加layerClass
类方法。)
问题是你的init方法。对于CALayer,指定的init方法是init,而不是initWithRect。尝试将代码移至-init
。这应该有用。