2011-09-23 4 views
1

스택 오버플로에 대한 내 첫번째 질문 :)길이는 CATransform3DMakeTranslation으로 설정했습니다.

CALayer에서 y 축 변환을 원합니다. 나는 큰 배경을 가지고있다 : 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"]; 

하지만 작동하지 않습니다 ...

감사 :

답변

2

자, 대답은 어쩌면 누군가를 도울 것입니다 :)

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]; 
+0

정말 고마워요! 비슷한 코드 내에서 "변형"대신 keyPath "origin.x"를 사용했으며 올바른 방향으로 코드를 지적했습니다! – iago849

관련 문제