100 Days of SwiftUI - Day 33
애니메이션의 스택
내용을 시작하기 앞서 기존에 배웠던 두 가지 내용을 복습했다.
- 수정자의 순서가 중요하다: 순서에 따라 뷰가 표시되는 방식이 다르다.
- 뷰에
.animation()
수정자를 사용하여 암시적 애니메이션을 적용할 수 있다.
애니메이션 또한 수정자를 여러번 사용할 수 있으며, 사용하는 순서에 따라 애니메이션이 적용되는 범위가 다르다.
- 적용 범위
.frame(width: 200, height: 200)
.background(enabled ? .blue : .red)
.foregroundStyle(.white)
.clipShape(.rect(cornerRadius: enabled ? 60 : 0))
.animation(.default, value: enabled)
.frame(width: 200, height: 200)
.background(enabled ? .blue : .red)
.animation(.default, value: enabled)
.foregroundStyle(.white)
.clipShape(.rect(cornerRadius: enabled ? 60 : 0))
첫번째 코드는 수정자 맨 뒤에 애니메이션 수정자가 있는 경우이고,
두번째 코드는 코드 중간에 수정자가 적용되어 있다.
애니메이션 수정자의 위쪽으로 수정자에 애니메이션이 적용되는 범위이다.
- 다중 사용
애니메이션 수정자를 여러번 사용할 수 있으며, 적용 범위는 애니메이션 수정자의 위쪽이다.
제스처에 애니메이션 적용하기
탭, 드래그, 스와이프 등의 제스처를 화면에서 읽어들여 처리하는 Gesture
프로토콜이 있다.
여기서는 간단하게 DragGesture()
만 소개했다.
.gesture()
수정자를 사용하여 뷰에 제스처 동작을 붙일 수 있다.
.gesture(
DragGesture()
.onChanged {dragAmount = $0.translation}
.onEnded {_ in dragAmount = .zero}
)