스프링 효과 (예 : UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
)와 함께 CAShapeLayer를 회전시키고 싶지만보기에는 레이어가 아닌 것을 선택하고 싶습니다.스프링 효과가있는 회전 애니메이션
버튼을 두드리면 메인 레이어의 하위 레이어는 3 * PI/4로 회전해야하고 스프링은 2 * PI/3으로 바뀌어야합니다. 그런 다음 버튼을 다시 탭하면 이전보다 역순으로 레이어 회전을 수행해야합니다. 먼저 2 * PI/3으로 바운스 한 다음 첫 번째 위치로 회전합니다 (첫 번째 회전 전).
어떻게 할 수 있습니까? 레이어의 변형 속성이 기본적으로 애니메이션 가능하기 때문에 나는 UIView.animateWithDuration(_:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)
으로 그것을 얻을 수 없습니다.
내가 CATransaction
을 변경 해봤지만 (고려 다른 회전을 복용하지 않고) 오직 하나의 각도로 회전 :
let rotation1 = CGAffineTransformRotate(CGAffineTransformIdentity, angle1)
let rotation2 = CGAffineTransformRotate(CGAffineTransformIdentity, angle2)
let transform = CGAffineTransformConcat(rotation1, rotation2)
CATransaction.begin()
CATransaction.setAnimationDuration(0.6)
self.plusLayer.setAffineTransform(transform)
CATransaction.commit()
업데이트
이 Duncan C post에 따르면 내가 CASpringAnimation
를 사용하려고 내가 애니메이션을 achive 한 방향으로 :
버튼을 누른 상태에서 애니메이션을 리버스하는 방법은 무엇입니까?
미리 도움을 주셔서 감사합니다.
감사합니다! 그것은 나를 많이 도왔다! 하지만 하나의 문제가 남았습니다 : 버튼을 두드리면 그 애니메이션을 뒤집는 방법은 무엇입니까? – krlb
다음과 같은 한 가지 방법이 있습니다. 현재 값과 현재 값을 추적하고 버튼을 클릭 할 때마다 전환하는 인스턴스 변수를 만듭니다. –
당신 말이 맞아요, 작동합니다! 다시 감사합니다! – krlb