Я пытаюсь анимировать свойство вида transform
. Вот мой код:Ошибка CAKeyframeAnimation Keypath
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:
«преобразовать». Я пробовал полчаса, чтобы отладить это, но не могу найти ошибку. Первоначально я хотя, что я выполнял анимации не допускается на имущество превратить UIView, но я знаю, что я могу сделать что-то вроде этого:
aView.transform = CGAffineTransformMakeRotation(M_PI/2);
Благодаря передовой.
Вы правы! Я думал о представлении 'transform'. Спасибо. Кроме того, значение 'CGFloat', которое принимает путь ключа' transform.rotation.z', представляет собой? Угол (если это радиан или градусы)? – pasawaya
Nevermind. Я проверил вашу ссылку. Это угол вращения в радианах. – pasawaya