Activity indicator in SwiftUI

后端 未结 9 2024
忘了有多久
忘了有多久 2020-11-29 17:36

Trying to add a full screen activity indicator in SwiftUI.

I can use .overlay(overlay: ) function in View Protocol.

With this, I c

9条回答
  •  执笔经年
    2020-11-29 18:17

    // Activity View
    
    struct ActivityIndicator: UIViewRepresentable {
    
        let style: UIActivityIndicatorView.Style
        @Binding var animate: Bool
    
        private let spinner: UIActivityIndicatorView = {
            $0.hidesWhenStopped = true
            return $0
        }(UIActivityIndicatorView(style: .medium))
    
        func makeUIView(context: UIViewRepresentableContext) -> UIActivityIndicatorView {
            spinner.style = style
            return spinner
        }
    
        func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext) {
            animate ? uiView.startAnimating() : uiView.stopAnimating()
        }
    
        func configure(_ indicator: (UIActivityIndicatorView) -> Void) -> some View {
            indicator(spinner)
            return self
        }   
    }
    
    // Usage
    struct ContentView: View {
    
        @State var animate = false
    
        var body: some View {
                ActivityIndicator(style: .large, animate: $animate)
                    .configure {
                        $0.color = .red
                }
                .background(Color.blue)
        }
    }
    

提交回复
热议问题