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 に答える