2011-12-23 4 views
0

私は画像を変換する必要があるアプリケーションを作成しており、画像はビューのどこにでも配置できます。しかし、私は、コード3次元回転イメージが別のイメージと交差するのはなぜですか?

CATransform3D rotationAndPerspectiveTransform = self.layer.transform; 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 22.5f * M_PI/180.0f, 0, 1, 0.0f); 
self.layer.transform = rotationAndPerspectiveTransform; 

の下に使用して透視変換をしていたときに私が直面しています問題は、それは完璧に動作しますが、私は、「透視変換」の画像(3D)の上に2D画像が交差する2次元画像を配置しようとすると、 3D画像。 3D画像の上には表示されません。

どうしてですか?

答えて

2

2つのCALayersが兄弟である場合、それらは同じ3-D空間に存在します。上記のように1つのレイヤーを回転させると(そのコードの遠近部分がなくても、my older answerから描画されたと思います)、アンカーポイントについてはそうします。

デフォルトでは、そのアンカーポイントはレイヤーの中心であるため、レイヤーは0のZ平面で分割されます。その半分が0より小さく、0よりも半分です。

新しいレイヤーを元のレイヤーの兄弟として作成すると、Z座標が0になり、回転したレイヤーの中心と交差します。そのレイヤーを既存のレイヤーの上に配置するには、新しいレイヤーのzPositionプロパティを、回転したレイヤーの上にレイヤー全体を移動させるのに十分な大きさの正(または負の場合もあります。

回転したレイヤのスーパーレイヤーの兄弟として、回転しているレイヤーの前にするレイヤーを配置することもできます。兄弟層の3次元位置決めの前に、まず階層に従います。

+0

ええ、説明してくれてありがとう:-) – iphonic

関連する問題