SwiftUI의 기본 애니메이션 적용하기: 간단한 애니메이션 만들기
SwiftUI의 기본 애니메이션 적용하기: 간단한 애니메이션 만들기
SwiftUI는 애플에서 제공하는 현대적인 UI 프레임워크로, 선언적 방식으로 사용자 인터페이스를 구성할 수 있습니다. 이 글에서는 SwiftUI를 사용하여 간단한 애니메이션을 적용하는 방법에 대해 알아보겠습니다. 애니메이션은 앱의 사용자 경험을 한층 더 향상시키는 중요한 요소입니다.
SwiftUI 애니메이션의 기본 개념
SwiftUI에서 애니메이션을 적용하는 것은 매우 직관적입니다. withAnimation
함수를 사용하면 특정 상태값이 변경될 때 자동으로 애니메이션이 적용되도록 할 수 있습니다. SwiftUI 애니메이션은 애니메이션의 선언적인 특성을 가지며, 이를 통해 UI의 상태 변경을 자연스럽게 표현할 수 있습니다.
예를 들어, 버튼을 눌렀을 때 크기가 커졌다 작아지는 간단한 애니메이션을 만들어 보겠습니다.
swiftimport SwiftUI struct ContentView: View { @State private var isPressed = false var body: some View { Button(action: { withAnimation { self.isPressed.toggle() } }) { Text("Press Me") .padding() .background(isPressed ? Color.red : Color.blue) .scaleEffect(isPressed ? 1.5 : 1.0) .animation(.easeInOut(duration: 0.5)) } } }
이 코드는 @State
프로퍼티인 isPressed
가 변경될 때 scaleEffect
와 배경색이 애니메이션을 통해 변경되는 것을 보여줍니다.
커스텀 애니메이션 만들기
SwiftUI에서는 기본 제공되는 애니메이션 외에도 다양한 커스터마이징이 가능합니다. 예를 들어, animation
메서드를 사용하여 애니메이션의 종류와 지속 시간을 설정할 수 있습니다. easeInOut
, easeIn
, easeOut
, linear
등의 애니메이션 커브를 사용할 수 있으며, duration
을 통해 애니메이션의 시간을 설정할 수 있습니다.
swiftimport SwiftUI struct CustomAnimationView: View { @State private var isRotated = false var body: some View { VStack { Spacer() Image(systemName: "arrow.right.circle") .resizable() .frame(width: 100, height: 100) .rotationEffect(.degrees(isRotated ? 360 : 0)) .animation(Animation.easeInOut(duration: 2.0).repeatForever(autoreverses: false)) .onAppear() { self.isRotated.toggle() } Spacer() } } }
위의 코드는 화살표 아이콘이 영원히 돌아가는 애니메이션을 보여줍니다. repeatForever
를 사용하여 애니메이션이 무한히 반복되도록 설정했습니다.
애니메이션의 조합
여러 애니메이션을 조합하여 복잡한 애니메이션 효과를 만들 수도 있습니다. SwiftUI에서는 animation
메서드를 중첩하여 여러 상태 변경에 각각 다른 애니메이션을 적용할 수 있습니다.
swiftimport SwiftUI struct CombinedAnimationView: View { @State private var isExpanded = false var body: some View { VStack { Spacer() Rectangle() .fill(isExpanded ? Color.green : Color.orange) .frame(width: isExpanded ? 300 : 100, height: 100) .cornerRadius(isExpanded ? 50 : 0) .animation(.default) .onTapGesture { withAnimation { self.isExpanded.toggle() } } Spacer() } }
이 코드는 터치 이벤트에 따라 사각형의 크기와 모서리 반경, 색상이 변경되는 애니메이션 효과를 보여줍니다. withAnimation
블록을 사용하여 여러 애니메이션을 동시에 적용할 수 있습니다.
정리
SwiftUI를 이용한 애니메이션은 코드의 간결함과 선언적 특성 덕분에 매우 직관적이고 쉽게 사용할 수 있습니다. 기본 애니메이션부터 커스텀 애니메이션, 애니메이션의 조합까지 다양한 방법을 통해 사용자 경험을 개선할 수 있습니다. 이를 통해 더욱 생동감 있고 매력적인 앱 인터페이스를 만들어 보세요.