https://developer.apple.com/documentation/swiftui/withanimation(_:_:)
withAnimation(_:_:)
바디 부분에서의 변화와 관련있는 모든 대상에 애니메이션 추가.
// Created by Toughie on 2023/04/23.
//
import SwiftUI
struct Animations: View {
@State var isAnimated: Bool = false
var niceColor = LinearGradient(colors: [Color.red, Color.blue, Color.green], startPoint: .topLeading, endPoint: .bottomTrailing)
var defaultColor = LinearGradient(colors: [Color.gray], startPoint: .leading, endPoint: .leading)
var body: some View {
VStack {
Spacer()
RoundedRectangle(cornerRadius: isAnimated ? 150 : 25)
.fill(isAnimated ? niceColor : defaultColor)
.frame(
width: isAnimated ? 300 : 100,
height: isAnimated ? 300 : 100)
.rotationEffect(Angle(degrees: isAnimated ? 360 : 0))
.offset(y: isAnimated ? 200 : 0)
Spacer()
Button("Gradation") {
//.delay(delay: Double)
withAnimation(Animation
.default
//autoreverses -> back to the original state
// 몇 회나 반복?
// .repeatCount(6, autoreverses: false)
// 무한반복
// .repeatForever(autoreverses: true)
) {
//isAnimated의 영향을 받는 모든 대상에 애니메이션 추가
isAnimated.toggle()
}
}
.padding()
}
}
}
특정 뷰에만 애니메이션을 줘야 하는 경우
.animation()를 특정 뷰에만 걸어줄 수도 있다.
(만약 isAnimated에 영향을 받는 다른 뷰들이 많다는 가정 하에..
아래와 같이 하면 RoundedRectangle에만 애니메이션이 걸림)
'SwiftUI > SwiftUI(Basic)' 카테고리의 다른 글
25. [SwiftUI] Transition (0) | 2023.04.23 |
---|---|
24. [SwiftUI] Animation Curves and Timing (0) | 2023.04.23 |
22. [SwiftUI] Ternary Operator 삼항 연산자 (0) | 2023.04.23 |
21. [SwiftUI] 조건문(if/else) (0) | 2023.04.23 |
20. [SwiftUI] @Binding (0) | 2023.04.23 |