2012-10-14 2 views

답변

22

당신의 의견 층의 위치를 ​​애니메이션 코어 애니메이션을 사용할 수있는이 튜토리얼은 당신에게 몇 가지 아이디어를 줄 수 있습니다. 애니메이션을 additive으로 설정하면 변경 (상대 위치) 만 새 절대 위치를 계산할 필요가 없습니다. 이 이후

CABasicAnimation *hover = [CABasicAnimation animationWithKeyPath:@"position"]; 
hover.additive = YES; // fromValue and toValue will be relative instead of absolute values 
hover.fromValue = [NSValue valueWithCGPoint:CGPointZero]; 
hover.toValue = [NSValue valueWithCGPoint:CGPointMake(0.0, -10.0)]; // y increases downwards on iOS 
hover.autoreverses = YES; // Animate back to normal afterwards 
hover.duration = 0.2; // The duration for one part of the animation (0.2 up and 0.2 down) 
hover.repeatCount = INFINITY; // The number of times the animation should repeat 
[myView.layer addAnimation:hover forKey:@"myHoverAnimation"]; 

당신이 당신의 코드에 QuartzCore.framework 및 #import <QuartzCore/QuartzCore.h>를 추가해야합니다 코어 애니메이션을 사용하고 있습니다. 스위프트 3 스위프트 4

+0

아우 맨이 더 효과적이었습니다! 이해하는 것이 더 쉬울뿐만 아니라 실제로 의미있는 다양한 가치를 시험해 볼 수있었습니다! 고마워요 !!! – Year3000

+0

데이비드 감사합니다. 너는 내 시간을 절약한다. 그것은 잘 작동합니다. – Smita

0

이러한 작업을 수행하려면 UIView의 하위 계층에 이미지를 배치 한 다음 해당 하위 계층 프레임을 애니메이션으로 만드는 것이 좋습니다. http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial

+0

당신이 링크 된 튜토리얼은 애니메이션을 수행하는 방법을 설명하지 않습니다. –

+0

레이어 작업이 자동으로 애니메이션으로 표시됩니다. –

+0

예, 독립 실행 형 레이어 인 경우 암시 적 애니메이션이 있지만 다시 애니메이션되지 않습니다. –

5

이 시도 :

CGRect frm_up = imageView.frame; 
frm_up.origin.y -= 10; 

[UIView animateWithDuration:0.5 
    delay:0.0 
    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeats 
    animations:^{ 
     imageView.frame = frm_up; 
    } 
    completion:NULL 
]; 
+0

굉장합니다! 유일한 것은 왼쪽 위로 움직이는 것입니다. 대각선처럼 0,0으로 갈 것입니다. – Year3000

+0

@ Year3000 어때? 1. 저는 프레임의 X 방향에 절대적으로 아무것도하지 않습니다. 2. 내가 바꿀 수있는 유일한 것은 y 위치이다. 그러나 자동 반향이 있어야한다. (메소드 호출의'options' 인자를 보라). 네가 뭔가를 놓친 것 같아. –

+0

IDK 이상 하네. 내 프레임은 (86, 198, 132, 217)이고 추천 한 것은 이미지 뷰의 중심과 같습니다. 0,0. – Year3000

7

:

let hover = CABasicAnimation(keyPath: "position") 

hover.isAdditive = true 
hover.fromValue = NSValue(cgPoint: CGPoint.zero) 
hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0, y: 100.0)) 
hover.autoreverses = true 
hover.duration = 2 
hover.repeatCount = Float.infinity 

myView.layer.add(hover, forKey: "myHoverAnimation") 
관련 문제