我有这个图层托管视图,它初始化如下:
// Init layers
self.wantsLayer = YES;
_hostedLayer = [CALayer layer];
_hostedLayer.delegate = self;
self.layer = _hostedLayer;
奇怪的是,没有调用委托方法updateLayer
当我注释掉最后3行时,它会被调用。
这里有什么问题?
提示:是的,我已覆盖wantsUpdateLayer
并返回YES
。
答案 0 :(得分:3)
当一个视图要求一个图层时,它默认获得CALayer的一个特殊的私有子类,它具有额外的功能。虽然自10.7以来我没有这样做,但在那些日子里它是一个全有或全无的命题 - 你要么使用视图得到的默认(私有)层,要么使用AppKit约定绘制,或者你自己制作了CALayer和绘图全部由CALayer本身或委托方法处理:
- (void)displayLayer:(CALayer *)layer;
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;
所以,我想在你的情况下会在你的视图中调用后两种方法,而不是视图特定的-updateLayer。