SHARE
TWEET

LoadingAnimation

a guest Dec 3rd, 2019 77 in 26 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. import SwiftUI
  3.  
  4. struct ContentView: View {
  5.  
  6.     @State private var progress: CGFloat = 1.0
  7.     @State private var count = 3
  8.    
  9.    
  10.     var totTime: Double = 3
  11.    
  12.     var body: some View {
  13.         ZStack {
  14.             Color(UIColor.darkGray)
  15.                 .edgesIgnoringSafeArea(.all)
  16.             VStack {
  17.                 ZStack {
  18.                     Circle()
  19.                         .stroke(Color.gray, lineWidth: 30)
  20.                         .padding(50)
  21.                     Circle()
  22.                         .trim(from: 0.0, to: progress)
  23.                         .stroke(LinearGradient(gradient: Gradient(colors: [.orange, .red]), startPoint: .leading, endPoint: .trailing), lineWidth: 30)
  24.                         .padding(50)
  25.                     ZStack {
  26.                         Circle()
  27.                             .fill(LinearGradient(gradient: Gradient(colors: [.orange, .red]), startPoint: .leading, endPoint: .trailing))
  28.                             .frame(width: 100)
  29.                         Text("\(count)")
  30.                             .fontWeight(.semibold)
  31.                             .font(.title)
  32.                     }
  33.                     .foregroundColor(.white)
  34.                 }
  35.                 Button(action: {
  36.                     self.startProgress()
  37.                 }) {
  38.                     ZStack {
  39.                         Text("Start")
  40.                             .fontWeight(.semibold)
  41.                             .font(.title)
  42.                     }
  43.                         .frame(minWidth: 0, maxWidth: .infinity)
  44.                         .padding()
  45.                         .foregroundColor(.white)
  46.                         .background(LinearGradient(gradient: Gradient(colors: [.orange, .red]), startPoint: .leading, endPoint: .trailing))
  47.                         .cornerRadius(40)
  48.                         .padding(.horizontal, 20)
  49.                    
  50.                 }
  51.             }
  52.         }
  53.     }
  54.    
  55.     func startProgress() {
  56.         self.count = Int(totTime)
  57.         self.progress = 0.0
  58.         withAnimation(.linear(duration: self.totTime)) {
  59.             self.progress = 1.0
  60.         }
  61.         _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
  62.             self.count -= 1
  63.             if self.count <= 0 {
  64.                 timer.invalidate()
  65.             }
  66.         }
  67.     }
  68.    
  69. }
  70.  
  71. struct ContentView_Previews: PreviewProvider {
  72.     static var previews: some View {
  73.         ContentView()
  74.     }
  75. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top