Skip to content

Instantly share code, notes, and snippets.

@TuenTuenna
Last active September 3, 2021 07:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TuenTuenna/b6e77f9bac3a0f9e6d21ea229bf85994 to your computer and use it in GitHub Desktop.
Save TuenTuenna/b6e77f9bac3a0f9e6d21ea229bf85994 to your computer and use it in GitHub Desktop.
SwiftUi Animation - Shake Hand View

SwiftUi 손흔드는 애니메이션

//
//  ShakeHandView.swift
//  ShakeHandView
//
//  Created by Jeff Jeong on 2021/06/12.
//

import SwiftUI

// 손흔드는 뷰 입니다!
struct ShakeHandView: View {
    // 뷰의 상태 변경을 위한 shouldShake 스테이트
    @State var shouldShake : Bool = false
    
    var body: some View {
        ZStack{ // Zstack 으로 층을 만들었습니다.
            Color.blue // 배경은 파란색으로 넣구요
            // 시스템 이미지를 사용했습니다.
            Image(systemName: "hand.raised.fill")
                .font(.system(size: 120)) // 크기 설정
                // 로테이트 이펙트로 회전을 시킵니다.
                // 스테이트의 값 변경에 따라 회전 변경
                .rotationEffect(
                    .degrees(shouldShake ? -30 : 30)
                    ,anchor: .bottom) // 앵커는 아래
                .animation(.easeInOut
                            .repeatForever() // 무한 반복
                            .speed(0.5)) // 스피드
                .onAppear{ // 뷰가 생성되고 보여질 때
                    shouldShake.toggle() // 값을 반전
                }
                .padding()
                .foregroundColor(.white)
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct ShakeHandView_Previews: PreviewProvider {
    static var previews: some View {
        ShakeHandView()
        // previewLayout 으로 미리보기 레이아웃 설정이 가능합니다.
        // sizeThatFits 으로 해당 뷰 크기 만큼 보여줍니다.
        .previewLayout(PreviewLayout.sizeThatFits)
//        .padding()
        // 미리보기 이름을 설정할 수 있습니다.
        .previewDisplayName("알람 뷰")
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment