2013-02-11 3 views
0

첫 번째 코어 애니메이션은 점 a에서 점 b로 이동하는 이미지입니다. 어떤 이유로 애니메이션이 호출 될 때 빨간색 상자가 나타나고 거기에있는 동안 내 이미지 대신 움직입니다. 앱의 UI에 대한 그 빨간색 상자를 필요로하지 않는 경우코어 애니메이션에서 UIImage 뷰로 이동하는 빨간색 상자

-(IBAction)preform:(id)sender{ 
CALayer *layer = [CALayer layer]; 
[layer setPosition:CGPointMake(100.0, 100.0)]; 
[layer setBounds:CGRectMake(0.0, 0.0, 50.0, 60.0)]; 
[layer setBackgroundColor:[[UIColor redColor] CGColor]]; 
[imView.layer addSublayer:layer]; 

CGPoint point = CGPointMake(imView.frame.origin.x, imView.frame.origin.y); 
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"]; 
anim.fromValue = [NSValue valueWithCGPoint:point]; 
anim.toValue = [NSValue valueWithCGPoint:CGPointMake(point.x + 50, point.y)]; 
anim.duration = 1.5f; 
anim.repeatCount =1; 
anim.removedOnCompletion = YES; 
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
[layer addAnimation:anim forKey:@"position"]; 
} 
+0

이를 받아 사용하는 방법을 배우려고 노력하는 그림 순간을 읽고 다시 코드를 읽으십시오. 그것은 당신이 요구하는 것과 정확히 똑같습니다. 첫 번째 장소에서 빨간색 레이어를 만들면서 먹은 이유는 무엇입니까? –

답변

1

, 그것을 만들고 대신 뷰의 레이어에 애니메이션을 적용되지 않습니다 다음은 내 코드입니다. 해당 빨간색 상자가 필요하다면 생성하고, 빨간색 상자 레이어가 아닌보기 레이어에 애니메이션을 적용하십시오.

레이어의 anchorPoint, position 속성이 실제로 레이어의 중심 인 경우가 아니라면, 구석이 아니야. 부드러운 애니메이션을 만들려면이를 고려해야합니다.

마지막으로 애니메이션 완료 후보기를 다시 되돌리려하지 않으려면 새 위치로 설정해야합니다. 애니메이션이 재생되는 동안보기의 재배치가 표시되지 않으므로 걱정하지 마십시오.

제안 (및 테스트되지 않은) 코드 :

-(IBAction)preform:(id)sender{ 

    CGPoint point = CGPointMake(imView.frame.size.width/2.0 , imView.frame.size.height/2.0); 
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"]; 
    anim.fromValue = [NSValue valueWithCGPoint:point]; 
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(point.x + 50, point.y)]; 
    anim.duration = 1.5f; 
    anim.repeatCount =1; 
    anim.removedOnCompletion = YES; 
    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
    [imView.layer addAnimation:anim forKey:@"position"]; 

    imView.center = CGPointMake(imView.center.x + 50, imView.center.y 
} 

대신 UIView 애니메이션 도우미 기능을 사용하면이 모든 쉬울 것,하지만 난 당신이 CAAnimation

+0

나는 UIView 애니메이션을 꽤 잘 알고 있으며 더 복잡한 애니메이션을하려고 할 때 나는 CA로 옮겼다. 도와 주셔서 감사합니다! – Tanner