基礎となるlayerを持つビューがあり、 CATransformLayerをビューのレイヤーに追加します。
[view.layer addSublayer:transformLayer];
追加したレイヤーには、いくつかの 3 次元ブロックの個々の面を表すあらゆる種類のサブレイヤーが含まれています。レイヤーにアニメーションを適用してブロックを回転させたいと思います。
CATransform3D rotation = CATransform3DMakeRotation(deg * M_PI / 180, x, y, z);
[CATransaction begin];
[(CATransformLayer *)[pView.layer.sublayers objectAtIndex:0] setSublayerTransform:rotation];
or (both seem to produce the same result)
[(CATransformLayer *)[pView.layer.sublayers objectAtIndex:0] setTransform:rotation];
[CATransaction commit];
問題は、レイヤーが立方体の中心ではなく、前面の角を中心に大まかに回転していることです (以下の例を参照)。
/ \ / \
/ \ / \ / \ / \ / \
/ \ / \ |\ / \ /| |\ / \ /|
|\ / \ /| | |\ /| | | |\ /| |
| |\ /| | \| | |/ \ OR / \| | |/
|\| | |/| ==> \|/ \ / \ / \ / \|/
|1|\|/|B| |\ / \ /| |\ / /|
\|2|A|/ |A|\ /| | | |\ /|2|
\|/ \|B| |/ \| |1|/
\|/ \|/
回転方向に応じて、A/B ラベルが 1/2 の位置に移動するか、1/2 が A/B に移動する必要があります。代わりに、最初の図から変化し、手前の角を中心に大まかに回転し、他の図に近いものになります。上部のラベルのないブロックは別のビューにあり、静的であるため、回転の一部ではありません。下のラベルの付いたブロックは、アニメーション化しようとしているビュー/レイヤーにあります。
希望する結果を得るために回転の中心を変更するにはどうすればよいですか?
さまざまなレイヤーのanchorPoint、zPosition、anchorPointZをいじりましたが、成功しませんでした。setSublayerTransform、setTransformも試しました。
私が求めているものを達成するために、ブロック側のサブレイヤー、変換レイヤー、ビューレイヤー、またはビュー自体の設定をいじる必要がありますか?
ガイダンスや指示をいただければ幸いです。