2013-05-31 3 views
2

Я использую анимацию ядра, чтобы сделать анимированный вид. Когда анимация остановится, представление вернется к исходному значению. Как я могу прекратить восстановление? Вот мой кодкак остановить восстановление до исходного значения при остановке анимации

#define p(x,y) CGPointMake(x,y) 
    #define v valueWithCGPoint 
    ... 
    CGPoint rectL=p(463, 473); 
    CGPoint rectR=p(503, 473); 
    NSValue *valueL = [NSValue v:rectL]; 
    NSValue *valueR = [NSValue v:rectR]; 
    NSArray *[email protected][valueL,valueR,valueL,valueR,valueL,valueR,valueL,valueR]; 

    CAKeyframeAnimation * theAnimation; 

    // Create the animation object, specifying the position property as the key path. 
    theAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"]; 
    theAnimation.values=firstArray; 
    theAnimation.duration=5.0; 
    //theAnimation.calculationMode= kCAAnimationLinear; 
    // Add the animation to the layer. 
    [self.boView.layer addAnimation:theAnimation forKey:@"moveBackAndForth"]; 
+0

Итак, когда анимация * заканчивается *, 'position' является ** not **' (503, 473) '? Это звучит не так. – Mar0ux

+0

@ Mar0ux not (503, 473), он восстанавливается до первоначального значения. –

+0

Я думаю, что вы делаете что-то неправильно. Это не должно произойти. Вы уверены, что проверяете значение * в */* после * блока завершения? У вас есть другая анимация? Является ли какой-то другой код, переопределяющий эти свойства: 'frame' /' position'/'center' и т. Д.? – Mar0ux

ответ

1

Установите конечное значение, прежде чем добавить анимацию. Анимация включает желаемое начальное значение, чтобы оно продолжало работать по вашему желанию.

+0

Спасибо, это хорошо работает. –

+0

Добавить [yourAnimation setFillMode: kCAFillModeForwards]; –

0

установить CAKeyframeAnimation свойство removedOnCompletion = NO;

theAnimation.removedOnCompletion = NO; 
+0

Спасибо, но это не сработает. Я не знаю, почему. –

Смежные вопросы