Skip to content

Instantly share code, notes, and snippets.

@TuenTuenna
Last active May 3, 2022 15:01
Show Gist options
  • Save TuenTuenna/d0e33ed04b3eb907e27f7830b361a2e4 to your computer and use it in GitHub Desktop.
Save TuenTuenna/d0e33ed04b3eb907e27f7830b361a2e4 to your computer and use it in GitHub Desktop.
SwiftUi - 컨텐츠 로딩 애니메이션 적용 전 코드
import SwiftUI

struct BlogPost {
    
    let title: String
    let author: String
    let article: String
    
    static func getDummy() -> BlogPost{
        return BlogPost(title: "오늘도 빡코딩!🔥👨‍💻", author: "쩡대리", article: "지혜는 소리다.이것은 같으며, 때까지 평화스러운 자신과 별과 행복스럽고 교향악이다. 주는 듣기만 찾아 부패를 눈에 몸이 새 것이다. 동산에는 용감하고 타오르고 풀이 청춘 커다란 봄바람을 그들에게 아름다우냐? 물방아 어디 예가 얼음 설레는 사랑의 꾸며 인간에 역사를 사막이다. 이 그들의 내는 청춘이 청춘의 수 하는 희망의 약동하다. 그들은 발휘하기 품었기 오직 그들의 붙잡아 듣기만 새가 쓸쓸하랴? 피어나는 행복스럽고 영락과 스며들어 피부가 청춘은 대한 끓는 쓸쓸하랴? 피어나기 무엇이 장식하는 길을 청춘의 뿐이다. 풀이 않는 천지는 것이다. 위하여서 없으면, 그들의 새 이상이 그림자는 싸인 대고, 투명하되 황금시대다.")
    }
}

struct ContentView: View {
    
    @State var post: BlogPost?
    
    var body: some View {
        
            VStack(alignment: .leading, spacing: 0) {
                
                Image("cat")
                    .resizable()
                    .aspectRatio(contentMode: .fill)
                    .clipShape(Circle())
                    .clipped()
                    .frame(width: 60, height: 60)
                    .padding(.bottom, 15)
                    
                
                Text(post?.title ?? "")
                    .font(.headline)
                    .frame(maxWidth: .infinity, alignment: .leading)
                    .padding(.bottom, 8)
                
                
                Text(post?.author ?? "")
                    .font(.subheadline)
                    .frame(maxWidth: .infinity, alignment: .leading)
                    .padding(.bottom, 30)
                    
                
                Text(post?.article ?? "")
                    .font(.body)
                    .frame(maxWidth: .infinity, alignment: .leading)
                    
                
                Spacer()
                
                Button(action: reloadData, label: {
                    Image(systemName: "repeat")
                        .font(.largeTitle)
                        .foregroundColor(.white)
                        .padding()
                        .background(RoundedRectangle(cornerRadius: 8).fill(.blue))
                })
                
                Spacer()
            }
            .padding(.horizontal, 20)
            .onAppear(perform: {
                self.post = BlogPost.getDummy()
            })
    }
    
    
}

//MARK: - Helper
extension ContentView {
    
    // 데이터 갱신
    fileprivate func reloadData(){
        self.post = nil
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: {
            self.post = BlogPost.getDummy()
        })
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment