2011-12-13 16 views
2

私はUIViewを持っています。私は、ビューの一番下に軸を持っている間に、反転してアニメーションしようとしています。例:これを行うにはiOS UIViewアニメーションCATransform3DMakeRotation混乱

enter image description here

、私はUIViewのアニメーションを使用しようとしています:今、私が望むどのように動作していない

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationCurveEaseOut animations:^{ 

    // Flip Down 
    top3.layer.anchorPoint = CGPointMake(0.5, 1.0); 
    top3.layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0); 

} completion:^(BOOL finished) { 

    // Reset? 
    //top3.transform = CGAffineTransformMakeScale(1, 1); 

}]; 

ビューがAWAYアニメーションされるように、それはそうですユーザーの方ではなく、ユーザーから。それは、私のイメージに示されているように、回転しているときにユーザに近づける3D効果を与えるようには思われません。私はこれが私の理解の欠如のために使用することを肯定していますCATransform3DMakeRotationを使用する方法。

質問:

  • どのように私はそれが低下するとビューは、ユーザーに近い表示させることができますか?私のイメージの例のように歪曲させるなど?
  • anchorPointを設定すると、私の視界がシフトしますが、これを防ぐにはどうすればいいですか?anchorPoint
  • UIViewアニメーションでは、イージング設定を使用できますか?オプションでUIViewAnimationCurveEaseOutを使用しました。
  • 重力設定は使用できますか?
+2

「M_PI/2」は= 90度です。あなたの中途半端なやり方に答えるべきでしょうか? –

+0

ありがとう、私は私の質問でそれを修正し、テストし、それが動作します。しかし、私はまだ残りの問題があります。 –

答えて

2
  • 右、それはあなたの質問から完全には明らかではないが、それが回転するアニメーション・ビューの滞在長方形の中に遠近歪みを見ていないようですね?遠近法で表示するCALayerの場合、そのtransformhereのようにm34要素を設定する必要があります。
  • anchorPointビューのレイヤーを移動することを補正するには、ビューの元の位置を変更する必要があります。
  • はい。使用しているアニメーションオプションに加えて、いくつかのアニメーションオプションがあります。たとえば、次のように組み合わせることができます(例:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction)。
  • Core Animationには物理学の概念がありません。あなたが行っているエフェクトに応じて、複数のアニメーションを特定のイージング設定と連動させることで実現できます。例えば、ソリッドサーフェスに当たる落下オブジェクトは、途中で「イージーイン」アニメーションを使用し、それが戻ってきた場合、「緩和する」。
+0

ありがとうございます。m34要素が機能しているように設定してください。私は自分のオリジナルを修正した。アンカーが機能するようにします。すべての私の問題が解決されたように見えます。ありがとう! –

+0

また、私がアニメーションの途中であることを知る方法はありますか?私は半分のポイントでUIViewの背景色を変更したい。 –

+1

UIViewアニメーションが完了したことを通知するわけではありませんが、0度-90度の部分を最初に実行した後、背景色を切り替えるなど、2段階でアニメーション化することで同じ効果を達成することができます。 90°-180°の部分を実行します。右の補間 - 前半のイージーインカーブと後半のイージーアウトまたはリニアカーブを使用すると、効果はシームレスになります。 –