如何让我的 UIView 使用我的自定义 CALayer 作为其支持层?
Posted
技术标签:
【中文标题】如何让我的 UIView 使用我的自定义 CALayer 作为其支持层?【英文标题】:How do I have my UIView use my custom CALayer as its backing layer? 【发布时间】: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 子类?
【问题讨论】:
【参考方案1】:您做得对(将layerClass
类方法添加到您的自定义 UIView 类。)
问题在于您的 init 方法。对于CALayer,指定的init方法是init,而不是initWithRect。尝试将您的代码移至-init
。应该可以的。
【讨论】:
那行得通。但是,如果我希望我的 Layer Init 方法与我的视图具有相同的边界怎么办? 这是自动发生的。当您在视图上设置属性(如边界)时,实际上只是在图层上设置它们的通道。以上是关于如何让我的 UIView 使用我的自定义 CALayer 作为其支持层?的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C - 给定一个 UINib 实例,我如何初始化我的自定义 UIView?
如何确保让我的自定义 OidcUserService 被默认调用?
使用 iCarousel 时,我的自定义 UIView 显示但里面啥都没有?