【问题标题】:How do I have my UIView use my custom CALayer as its backing layer?如何让我的 UIView 使用我的自定义 CALayer 作为其支持层?
【发布时间】:2015-08-29 21:30:57
【问题描述】:

我正在按照苹果文档中的建议覆盖 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 子类?

【问题讨论】:

    标签: ios core-animation


    【解决方案1】:

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

    问题在于您的 init 方法。对于CALayer,指定的init方法是init,而不是initWithRect。尝试将您的代码移至-init。应该可以的。

    【讨论】:

    • 那行得通。但是,如果我希望我的 Layer Init 方法与我的视图具有相同的边界怎么办?
    • 这是自动发生的。当您在视图上设置属性(如边界)时,实际上只是在图层上设置它们的通道。
    猜你喜欢
    • 2015-05-22
    • 2011-03-03
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多