transform
ビューのプロパティをアニメーション化しようとしています。これが私のコードです:
CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
NSArray *transformValues = [NSArray arrayWithObjects:
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation((3*M_PI)/8)],
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation(-((3*M_PI)/8))],
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation((3*M_PI)/8)],
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation(-((3*M_PI)/8))],
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation((3*M_PI)/8)],
[NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation(-((3*M_PI)/8))],
nil];
[shakeAnimation setValues:transformValues];
NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.16f],[NSNumber numberWithFloat:0.33f],[NSNumber numberWithFloat:0.49f],[NSNumber numberWithFloat:0.66f],[NSNumber numberWithFloat:0.82f], [NSNumber numberWithFloat:1.0f], nil];
[shakeAnimation setKeyTimes:times];
NSArray *timingFunctions = [NSArray arrayWithObjects:
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
nil];
[shakeAnimation setTimingFunctions:timingFunctions];
shakeAnimation.fillMode = kCAFillModeForwards;
shakeAnimation.removedOnCompletion = NO;
shakeAnimation.duration = 1.0f;
[self.someView.layer addAnimation:shakeAnimation forKey:@"anim"];
animationWithKeyPath:
メソッドのパラメータを「transform」に設定すると、なぜかエラーになります。これをデバッグするために 30 分間試しましたが、エラーが見つかりません。最初は、UIView の変換プロパティで許可されていないアニメーションを実行していると思いましたが、次のようなことができることはわかっています。
aView.transform = CGAffineTransformMakeRotation(M_PI/2);
ありがとうございます。