[swift] Swift Core Animation으로 그림자 애니메이션 만들기

Core Animation은 iOS 및 macOS 애플리케이션에서 애니메이션을 쉽게 구현하기 위한 프레임워크입니다. Core Animation의 다양한 기능 중 하나는 그림자 애니메이션을 만들 수 있는 기능입니다. 그림자 애니메이션은 인터페이스에 깊이와 현실감을 더해주는 데에 유용합니다. 이번 포스트에서는 Swift에서 Core Animation을 사용하여 그림자 애니메이션을 만드는 방법을 알아보겠습니다.

1. CALayer 설정하기

먼저, 그림자를 적용할 뷰의 CALayer를 설정해야합니다. 이를 위해 특정 뷰의 layer 프로퍼티에 접근하여 CALayer 객체를 얻어야합니다. 예를 들어, UIView의 경우 다음과 같은 코드로 CALayer를 설정할 수 있습니다.

let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
let shadowLayer = view.layer

// 그림자 설정
shadowLayer.shadowColor = UIColor.black.cgColor
shadowLayer.shadowOpacity = 0.5
shadowLayer.shadowRadius = 5
shadowLayer.shadowOffset = CGSize(width: 0, height: 2)

2. 애니메이션 적용하기

그림자 애니메이션을 적용하기 위해 CABasicAnimation 객체를 생성하고, 애니메이션의 속성을 설정해야합니다. 이 경우, 그림자의 위치를 애니메이션화하고자 하므로 shadowOffset 속성을 애니메이션화해야합니다. 다음은 그림자 위치를 애니메이션화하는 코드 예시입니다.

let animation = CABasicAnimation(keyPath: "shadowOffset")
animation.fromValue = NSValue(cgSize: CGSize(width: 0, height: 2))
animation.toValue = NSValue(cgSize: CGSize(width: 0, height: -2))
animation.autoreverses = true
animation.duration = 0.5
animation.repeatCount = .infinity

// 애니메이션 적용
shadowLayer.add(animation, forKey: "shadowAnimation")

위의 코드에서는 shadowOffset 속성의 애니메이션화를 위해 CABasicAnimation 객체를 생성하였습니다. fromValue와 toValue를 설정하여 시작 값과 종료 값을 지정할 수 있습니다. autoreverses 속성을 true로 설정하면 애니메이션을 왕복으로 실행하며, duration 속성은 애니메이션의 지속 시간을 나타냅니다. repeatCount를 .infinity로 설정하면 애니메이션이 무한 반복됩니다.

3. 실행하기

위의 코드를 실행하면 해당 뷰에 그림자 애니메이션이 적용됩니다. 애니메이션의 속성을 변경하여 원하는 그림자 효과를 만들 수 있습니다.

애니메이션을 정지하려면 다음과 같은 코드를 사용할 수 있습니다.

shadowLayer.removeAnimation(forKey: "shadowAnimation")

이를 통해 그림자 애니메이션을 손쉽게 만들고 적용할 수 있습니다. Core Animation을 사용하는 것은 애플리케이션에 동적인 요소를 추가하는 데 매우 효과적입니다. Core Animation에는 더 많은 기능이 있으므로 관심있는 분들은 공식 문서를 참고해보시기 바랍니다.

참고 자료