Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
SwiftUI/SwiftUI(Basic)

23. [SwiftUI] Animations basic

by Toughie 2023. 4. 23.

https://developer.apple.com/documentation/swiftui/withanimation(_:_:) 

 

withAnimation(_:_:) | Apple Developer Documentation

Returns the result of recomputing the view’s body with the provided animation.

developer.apple.com

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