[swift] Core Animation 프레임워크를 사용한 애니메이션 구현 방법

Core Animation은 iOS 및 macOS 애플리케이션에서 애니메이션을 만들고 제어하는 강력한 프레임워크입니다. Swift에서 Core Animation을 사용하여 다양한 애니메이션 효과를 구현할 수 있습니다. 이번 포스트에서는 Core Animation 프레임워크를 사용하여 간단한 애니메이션을 만드는 방법을 알아보겠습니다.

애니메이션을 위한 Layer 생성

Core Animation에서 애니메이션을 만들기 위해서는 먼저 CALayer를 생성해야 합니다. CALayer는 view의 backing layer로, 모든 시각적 콘텐츠를 나타냅니다.

import UIKit

class AnimationViewController: UIViewController {
    let animatedLayer = CALayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // animatedLayer의 프레임, 색상 설정 등
        self.view.layer.addSublayer(animatedLayer)
    }
}

위 예제에서는 AnimationViewController 클래스 내에서 animatedLayer를 생성하고, viewsublayer로 추가했습니다.

애니메이션 효과 적용

애니메이션 효과를 적용하기 위해서는 CABasicAnimation 또는 CAKeyframeAnimation을 사용할 수 있습니다. CABasicAnimation은 시작 값과 끝 값을 지정하여 애니메이션을 생성하고, CAKeyframeAnimation은 여러 중간 값을 정의하여 복잡한 경로의 애니메이션을 만들 수 있습니다.

import UIKit

class AnimationViewController: UIViewController {
    let animatedLayer = CALayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // animatedLayer의 프레임, 색상 설정 등
        self.view.layer.addSublayer(animatedLayer)
        
        // 애니메이션 효과 적용
        let positionAnimation = CABasicAnimation(keyPath: "position")
        positionAnimation.fromValue = CGPoint(x: 0, y: 0)
        positionAnimation.toValue = CGPoint(x: 100, y: 100)
        positionAnimation.duration = 1.0
        animatedLayer.add(positionAnimation, forKey: "position")
    }
}

위 예제에서는 CABasicAnimation을 사용하여 animatedLayer의 이동 애니메이션을 만들었습니다.

애니메이션 제어

애니메이션을 시작하거나 중지하려면 UIView.animate(withDuration:animations:completion:) 메서드를 사용할 수 있습니다.

UIView.animate(withDuration: 1.0, animations: {
    // 애니메이션 효과 적용
    self.animatedLayer.position = CGPoint(x: 100, y: 100)
}, completion: { _ in
    // 애니메이션이 끝난 후의 작업
})

위 예제에서는 UIView.animate 메서드를 사용하여 동일한 이동 애니메이션을 만들 수 있습니다.

Core Animation을 사용하여 다양한 애니메이션 효과를 만들고 제어할 수 있습니다. 레이아웃 및 시각적 요소의 애니메이션을 만들 때 Core Animation을 활용하여 애플리케이션에 동적이고 매끄러운 사용자 경험을 제공할 수 있습니다.

참고 자료: Apple Developer Documentation - Core Animation