2012-03-11 13 views
1

**注:これはOS XではなくiOS向けです。したがって暗黙のアニメーションは自動的に設定されません。CALayerの 'position'プロパティに暗黙のアニメーションを追加するにはどうすればよいですか?

positionプロパティのCALayerに暗黙のアニメーションを追加しようとしています。

私の(間違った)コードはこれです:

NSMutableDictionary * actions = [self.view.layer.actions mutableCopy ] ; 
if (!actions) { actions = [ NSMutableDictionary dictionary ] ; } 

CABasicAnimation * anim = [ CABasicAnimation animationForKeyPath:@"position" ] ; 

[ actions setValue:anim forKey:@"position" ] ; 
self.view.layer.actions = actions ; 

私の質問は、どのような(上記アニメーションプロパティ、)アニメーションの一種すなわちCABasicAnimationCATransition私はこのシナリオのために使用する必要があり、どのように私がすべきです設定しますか?

グラツィエ

答えて

1

暗黙のアニメーションは、単にpositionプロパティ(すなわちself.view.layer.position = <new position>;)を設定し、クォーツがあなたの現在のCATransactionの設定を使用して、残りの世話をすることでトリガされます。

明示的なアニメーション(あなたがしようとしているようです)を使用したい場合、私はCABasicAnimationを使用して、このようなことを行います。

self.view.layer.position = <new position>; 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"]; 
    animation.duration = <duration>; 
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
    animation.fromValue = <current position>; 
    animation.toValue = <new position>; 
    [line addAnimation:animation forKey:@"position"]; 
+0

私はあなたの言うことはOS Xでは当てはまりますが、iOS暗黙のアニメーションは自動的には設定されません。 – nielsbot

+0

前回私が行ったのは、(iOS 4.x)正しく覚えていれば自動的に設定されていました。それ以外の場合は、 '[CATransaction begin]'と '[CATransaction commit]'の変更をラップする必要があるかもしれません。 – jin

+0

これが真なら、 'layer.position = p'は位置をアニメーション化しますか?私は突然の移行を見るだけです。 – nielsbot

関連する問題