我正在使用CALayers在我的NSView子类中使用-(void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
进行一些高级绘图在这个回调中我给了一个CALayer,但是我需要知道任意大的图层列表中该图层的z-index(所有这些都是根层的子层。)
我尝试int index = [self.layer.sublayers indexOfObject:someCALayer];
,但这似乎不起作用。
如何确定CALayer的索引?
答案 0 :(得分:2)
当我添加它们时,我最终设置了每个CALayer的z-index属性,并用它来确定位置。
for (int x = 0; x < NUM_LAYERS; x++) {
CALayer* layer = [[CALayer alloc] init];
// initialize stuff
layer.zPosition = x;
[self.layer addSublayer:layer];
}
答案 1 :(得分:0)
在CoreAnimation或AppKit中没有方法-drawFrameLayer:inContext:
,因此很难说它提供的图层有很多确定性。 (我假设它来自某些第三方框架?)
通常,您使用的图层是CoreAnimation的“模型树”的一部分。在内部,CA制作这些层的副本,即“表示树”。您可以使用-modelLayer
和-presentationLayer
方法找到相应的副本。
因此,如果您给出的图层位于演示树中,则可能有效:
[self.layer.sublayers indexOfObject:someCALayer.modelLayer]