1

我有点困惑。我想以某种顺序堆叠 CALayers 以将一个绘制在另一个之上,但我也想从继承这些层带来的转换中受益。

想象一个身体、上臂、前臂和手。我想为手臂和手设置锚点和父点,这样我就可以旋转手臂并且手会跟随。

这就是我所做的:

CALayer *body = [CALayer layer];
body.path = @"body.png";
body.anchorPoint = ap1;
CALayer *arm = [CALayer layer];
arm.path = @"arm.png";
arm.anchorPoint = ap2;
CALayer *hand = [CALayer layer];
hand.path = @"hand.png";
hand.anchorPoint = ap3;
[myView.layer addSublayer:body];
[myView.layer addSublayer:arm];
[myView.layer addSublayer:hand];
hand.parent = arm;
arm.parent = body;

一切都很好,但是如果我想让身体与手臂和手重叠怎么办?有没有办法保持这个育儿顺序但覆盖绘图顺序?这样做有什么聪明的主意吗?

4

1 回答 1

5

子图层总是在它们的超图层之前绘制。你无法改变这一点。

兄弟姐妹(同一超层的子层)可以使用该zPosition属性来获得对渲染顺序的更细粒度的控制。顺便说一句,有很多子层会对性能产生影响,所以在你得到太多子层之前,我会切换到一个更专注于图形的框架CALayer

于 2012-08-10T03:32:23.423 回答