CALayer,anchorPoint和图层层次结构

时间:2010-07-19 13:14:33

标签: cocoa macos core-animation hierarchy calayer

我尝试在图层层次结构中使用anchorPoint来移动图层及其子图层。不幸的是,子层没有与根层一起移动。在自定义NSView中设置我的图层层次结构,如下面的代码段所示。

CALayer * rootLayer;
rootLayer = [[CALayer layer] retain];
rootLayer.position = CGPointMake(...);
[self.layer addSublayer:rootLayer];

subLayer = [[MapLayer layer] retain];
subLayer.position = CGPointMake(...);
[rootLayer addSublayer:baseLayer];

在处理鼠标事件时,我想设置rootLayer的anchorPoint来移动整个图层层次结构:

rootLayer.anchorPoint = CGPoint(0.7, 0.7);

我希望通过此调用,rootLayer与其subLayer一起移动,以便锚点位于视图的中心。发生的是,子层没有移动。只有在我打电话的时候:

rootLayer.anchorPoint = CGPoint(0.7, 0.7);
subLayer.anchorPoint = CGPoint(0.7, 0.7);

图层的行为符合预期。

我认为设置根层的锚点就足够了。这在OS的X Map应用程序中使用。我设置了视图并使用anchorPoint移动整个地图。只有自定义NSView中的一个子层,应用程序就会按预期运行。

提前致谢。

更新:与同事讨论后,我设置了rootLayer的界限,现在它可以正常工作。

CALayer * rootLayer;
rootLayer = [[CALayer layer] retain];
rootLayer.bounds = CGRectMake(0, 0, 256, 256);
rootLayer.position = CGPointMake(...);
[self.layer addSublayer:rootLayer];

// ...

0 个答案:

没有答案