궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
PROJECT/Simple

SwiftUI Project4 : Lottie 애니메이션으로 카드만들기

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

Lottie 애니메이션

1. 세팅

Xcode의 프로젝트 이름은 LottieCard라고 정해주고 프로젝트 안에 Lottie 애니메이션을 사용할 수 있도록 세팅을 해줍니다.

 

 

ContetView에 화면을 구성해주기 위해 재사용 될 수 있는 CardView를 먼저 만들어주겠습니다.

 

새로운 SwiftUI 파일을 생성후 이름은 'Lottie Card' 라고 정해주고 아래와 같이 코드를 작성해줍니다.

//LottieCard 

import SwiftUI

struct LottieCard: View {
    
    var title = "서근 개발블로그 카드"
    var icon = "faceid"
    var animate = "A"
    var color1 = Color(Literal())
    var color2 = Color(Literal())
    
    var body: some View {
        
        ZStack {
            RoundedRectangle(cornerRadius: 30)
                .fill(LinearGradient(gradient: Gradient(colors: [color1, color2]), startPoint: .top, endPoint: .bottomTrailing))  
                .frame(width: 400, height: 250)
                .shadow(color: Color.gray, radius: 25, x: -10, y: 10)
            //카드안 동그라미 아이콘
            ZStack{
                Circle().fill(Color(Color(Literal()).opacity(0.3))
                    .frame(width: 50)
             Image(systemName: icon)
                .resizable()
                .frame(width: 24, height: 24)
                .foregroundColor(.white)
            //아이콘의 위치 조정
            }.offset(x: 155, y: -80)
            //카드이름
            Text(title)
                .foregroundColor(.white)
                .fontWeight(.bold)
                .offset(x: -130, y: -80)
            
            //로티 애니메이션
            LottieView(filename: animate)
                .frame(width: 250, height: 250)
                .offset(x: 0, y: 10)
            
        }  
    }
}

Xcode에 사용자가 원하는 Lottle Animation을 추가해야하는데, 사이트에 접속해서 원하는 애니메이션을 Json형태로 다운받아주세요.

제가 사용한 애니메이션은 아래 파일로 올려두겠습니다.

map.json
0.03MB
School.json
0.20MB
sending-email.json
0.06MB

만약 'LottieCard'뷰의 LottieViewfilename에 첨부한 Json명을 넣으면 미리보기 할 수 있습니다.

            //로티 애니메이션
            LottieView(filename: "sending-email")
                .frame(width: 250, height: 250)
                .offset(x: 0, y: 10)

2. 코드 작성

ContentView로 가서 아래와 같이 코드를 작성해줍니다.

struct ContentView: View {
    @State var show = false
    var body: some View {
        
        ZStack {
            LottieCard(title: "스위프트UI", icon: "qrcode.viewfinder", animate: "sending-email", 
            color1: Color(literal()), color2: Color(literal())
        }

완성된 카드를 아래 여러번 추가해서 한 화면에 3개를 띄워보도록 하겠습니다.

 

우선 show@State 로 가져와주고 offsetshowtrue 이면 y:140, false 이면 y:20으로 적성합니다.

 

그리고 애니메이션 효과 까지 적용시켜주도록 하겠습니다. (Color 부분은 직접 바꿔주셔야 합니다.)

 

화면을 터치하면 실행되게 하는 onTapGestrueshowtoggle해줍니다.

            LottieCard(title: "스위프트UI", icon: "qrcode.viewfinder", animate: "sending-email", color1: Color(literal()), color2: Color(literal())
                .offset(y: show ? 140: 20)
                .animation(.spring(response: 0.6, dampingFraction: 0.6, blendDuration: 0))
                .onTapGesture {
                    self.show.toggle()
                }

그 밑에 카드는 코드를 조금 다르게 해서 넣어주세요.

            LottieCard(title: "스위프트UI", icon: "qrcode.viewfinder", animate: "School", color1: Color(literal), color2: Color(literal)
                .offset(x: show ? -200: 00)
                .rotationEffect(Angle(degrees: show ? 120: 0))
                .animation(.spring(response: 0.6, dampingFraction: 0.6, blendDuration: 0))
                .onTapGesture {
                    self.show.toggle()
                }
            
            
            LottieCard(title: "스위프트UI", icon: "qrcode.viewfinder", animate: "map", color1: Color(literal), color2: Color(literal)
                .offset(x: show ? -200: 00)
                .rotationEffect(Angle(degrees: show ? 50: 0))
                .animation(.spring(response: 0.6, dampingFraction: 0.6, blendDuration: 0))
                .onTapGesture {
                    self.show.toggle()
                }

 

읽어주셔서 감사합니다🤟

 

본 게시글의 전체코드 GitHub 👇🏻

 

Seogun95/SwiftUI_Project4-LottieCard-

Project4. Lottie Animation을 사용하여 Card 만들기. Contribute to Seogun95/SwiftUI_Project4-LottieCard- development by creating an account on GitHub.

github.com

 

 


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.