CALayer,anchorPoint和层次结构

我尝试在图层层次结构中使用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];

// ...
    
已邀请:

要回复问题请先登录注册