Как переместить вид или метку в направлении х с помощью CABasicAnimation в iPhone - PullRequest
12 голосов
/ 12 октября 2009

Я использую следующий код для перемещения метки из одной позиции в другую в направлении х

CABasicAnimation *theAnimation; 
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
    theAnimation.duration=1;
    theAnimation.repeatCount=1;
    theAnimation.autoreverses=NO;
    theAnimation.fromValue=[NSNumber numberWithFloat:0];
    theAnimation.toValue=[NSNumber numberWithFloat:80];


    [lbl.layer addAnimation:theAnimation forKey:@"animateLayer"];

Но в этом случае в конце анимации метка возвращается в исходное положение. Как убедиться, что он остается в положении, в котором он перемещен.

Есть ли хороший способ сделать это без использования таймера и изменения координат самостоятельно.

Ответы [ 2 ]

14 голосов
/ 12 октября 2009

После завершения анимации она удаляется. Вот почему это огрызается назад. Добавьте это к вашей анимации:

theAnimation.removedOnCompletion = NO;
theAnimation.fillMode = kCAFillModeForwards;

Это предотвратит удаление анимации и заставит анимацию оставаться в своем окончательном состоянии после завершения.

1 голос
/ 06 сентября 2014

Здесь есть 2 пункта, которые нужно обновить. Уровень представления и модель. CABasicAnimation изменяет только уровень представления и никогда не обновляет модель. Поэтому, когда уровень представления анимации заканчивается, он исчезает, и вы видите представление со значениями из модели. Вам просто нужно обновить модель новым значением после завершения анимации.

[layer setValue:toValue forKeyPath:keyPath];

взгляните на утилиту, которую я написал, чтобы помочь с этим, HMBasicAnimation http://hellomihai.wordpress.com/2014/09/02/hmbasicanimation-utility/

использование:

[HMBasicAnimation doAnimation:myView.layer // layer youre updating
                      toValue:myView.frame.size.width/2 // your value
                     duration:1.5 // duration
                 delaySeconds:1 // animation delay (good for chaining animations
                      keyPath:HMBasicAnimation_TRANSLATION_X]; // what you're changing, several available
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...