iOS 14부터, SwiftUI에서는 AnimatableModifier
프로토콜을 사용하여 사용자 지정 애니메이션 변형을 만들 수 있습니다. AnimatableModifier
는 뷰의 레이아웃, 애니메이션 및 상호 작용을 변경하기 위해 사용됩니다.
AnimatableModifier의 기본 구조
AnimatableModifier
프로토콜은 다음과 같이 정의됩니다.
protocol AnimatableModifier : Animatable, ViewModifier {
associatedtype Body : View
var animatableData: Self.AnimatableData { get set }
func body(content: Self.Content) -> Self.Body
}
AnimatableModifier
는 ViewModifier
프로토콜을 준수하며, animatableData
속성과 body(content:)
메서드를 구현해야 합니다. Animatable
프로토콜을 준수하므로, animatableData
속성은 애니메이션 가능한 데이터를 저장합니다.
AnimatableModifier로 사용자 지정 애니메이션 변형 생성하기
다음은 사용자 정의 애니메이션 변형을 구현하는 간단한 예제입니다.
struct ScaleTransform: AnimatableModifier {
var scale: CGFloat
var animatableData: CGFloat {
get { scale }
set { scale = newValue }
}
func body(content: Content) -> some View {
content.scaleEffect(scale)
}
}
위 코드에서 ScaleTransform
은 AnimatableModifier
프로토콜을 준수하며, scale
속성을 사용하여 크기 변환을 지정합니다. animatableData
속성은 크기 변환에 대한 데이터를 저장하고, body(content:)
메서드는 변환을 수행합니다.
애니메이션과의 통합
AnimatableModifier
를 사용하여 애니메이션을 수행하려면, withAnimation
함수를 호출하여 적용할 수 있습니다.
withAnimation {
self.scale = 1.5
}
애니메이션이 적용되는 동안 animatableData
속성의 값이 자동으로 변경되어 애니메이션 효과가 적용됩니다.
AnimatableModifier
를 사용하면 SwiftUI에서 사용자 지정 애니메이션 변형을 쉽게 생성하고 적용할 수 있습니다.
더 많은 정보는 Apple 공식 문서를 참조하세요.