Это странный запрос, но я использую Core Animation (CALayers), и я хочу, чтобы моя анимация была изменчивой и негладкой. Я хочу, чтобы изображение, которое я настраивал, вращался как секундная стрелка на часах. Вот мой код:Негладкая анимация с Core Animation
UIImage *arrowImage = [UIImage imageNamed:@"arrow.jpg"];
CALayer *arrow = [CALayer layer];
arrow.contents = (id)arrowImage.CGImage;
arrow.bounds = CGRectMake(0, 0, 169.25, 45.25);
arrow.position = CGPointMake(self.view.bounds.size.width/2, arrowImage.size.height/2);
arrow.anchorPoint = CGPointMake(0.0, 0.5);
[self.view.layer addSublayer:arrow];
CABasicAnimation *anim1 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
anim1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
anim1.fromValue = [NSNumber numberWithFloat:0];
anim1.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
anim1.duration = 4.0;
[arrow addAnimation:anim1 forKey:@"transform"];
Он производит скользящее движение, которое я не хочу. Как мне обойти это? Любая помощь приветствуется.
Спасибо за ответ, хотя я слышал, что использование CALayers ускорит производительность приложений. Кроме того, я нашел пример того, что я ищу, хотя автор не очень хорошо его объяснил: http://blog.moonshine-project.com/en/2010/03/14/implicit-animation-of -custom-calayer-properties/ –
Jlehr прав. Я хочу, чтобы стрелка защелкнулась и исчезла в новом месте без скольжения, тогда вы просто не должны использовать анимацию вообще. Просто примените преобразование вращения непосредственно к изображению, и все готово. –
Будет ли что-то делать в производительности приложений? Похоже, это ускорит его. Кроме того, это только я придирчивый, но большинство часовых приложений имеют реалистичное чувство к их аналоговым часам. Когда вторая рука движется, она немного вибрирует. Посмотрите на стандартное приложение мирового времени, которое поставляется с iPhone для примера. –