0

私のアプリケーションでは、以下のようにkeyPathframeを使用して次のアニメーションを追加しようとしています

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"frame"];
    animation.duration=0.6;
    animation.repeatCount=1;
    animation.delegate=self;
    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    animation.fromValue=[NSValue valueWithCGRect:self.layer.frame];
    animation.toValue=[NSValue valueWithCGRect:rect];//rect is a new frame 
    [self.layer addAnimation:animation forKey:@"frameChange"];
    [self setFrame:rect];

上記のメソッドではアニメーションは発生していませんが、デリゲートメソッドが正常にanimationDidStop:(CAAnimation *)anim finished: 呼び出されました。

しかし、プロパティを配置するための以下のアニメーションはうまく機能しています

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"position"];
animation.duration=0.6;
animation.repeatCount=1;
animation.delegate=self;
animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.fromValue=[NSValue valueWithCGPoint:self.layer.position];
animation.toValue=[NSValue valueWithCGPoint:rect.origin];
[self.layer addAnimation:animation forKey:@"frameChange"];

フレームプロパティがアニメーション化されないのはなぜですか?

4

1 に答える 1

3

フレームはアニメート可能なプロパティではありません。位置と境界のアニメーションを作成する必要があります。両方の時間を一緒にするには、CAAnimationGroup内に配置します。

于 2013-01-09T06:39:40.183 に答える