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

时间:2015-08-29 21:30:57

标签: ios core-animation

我正在按照苹果公司的文档推荐使用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子类?

1 个答案:

答案 0 :(得分:4)

您做得对(向您的自定义UIView类添加layerClass类方法。)

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