Длительность, установленная с помощью CATransform3DMakeTranslation - PullRequest
1 голос
/ 23 сентября 2011

мой первый вопрос о переполнении стека:)

Я хочу сделать перевод оси Y на CALayer. Я получил большой фон: 320x4000px. Перевод работает со следующим кодом:

NSNumber *deplacement = [NSNumber numberWithFloat:([app.session.progression floatValue] * HAUTEUR_FOND) /100];

self.backgroundLayer.transform = CATransform3DMakeTranslation(0, -[deplacement floatValue], 0);

Но с помощью этого кода невозможно установить продолжительность ...

Я пытался с этим:

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
transformAnimation.duration = 5.0f;
transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -[deplacement floatValue], 0)];
[self.backgroundLayer addAnimation:transformAnimation forKey:@"position.y"];

но это не работает ...

Спасибо за помощь:)

1 Ответ

2 голосов
/ 26 сентября 2011

Хорошо, вот ответ, может, кому-то это поможет:)

NSNumber *deplacement = [NSNumber numberWithFloat:([app.session.progression floatValue] * HAUTEUR_FOND) /100];
DebugLog(@"deplacement : %@", deplacement);

if(!backgroundPositionMemo) backgroundPositionMemo = 0;

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
transformAnimation.duration = 1.0f;
transformAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -backgroundPositionMemo, 0)];
transformAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -[deplacement floatValue], 0)];
transformAnimation.removedOnCompletion = NO;
transformAnimation.fillMode = kCAFillModeForwards;
[self.backgroundLayer addAnimation:transformAnimation forKey:@"transform"];

backgroundPositionMemo = [deplacement floatValue];
...