Is there an ActivityIndicator in WatchKit for Apple Watch?

后端 未结 8 1200
轮回少年
轮回少年 2020-11-30 07:29

Is there an ActivityIndicator (or something like it) in WatchKit for Apple Watch? How do you all give the user feedback about some longer lasting background activity?

8条回答
  •  隐瞒了意图╮
    2020-11-30 08:01

    Here is an simple text indicator, which uses a @State attribute:

    struct MyView: View {
        private let loaderSpeed = 0.1 // seconds per state
        private let loaderStates = [
            "•       ",
            " •      ",
            "  •     ",
            "   •    ",
            "    •   ",
            "     •  ",
            "      • ",
            "       •",
            "      • ",
            "     •  ",
            "    •   ",
            "   •    ",
            "  •     ",
            " •      ",
        ]
        @State private var loaderMessage = ""
        @State private var loaderState = 0 {
            didSet {
                if self.loaderState > 0 {
                    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + self.loaderSpeed) {
                        if self.loaderState > 0 {
                            self.loaderMessage = self.loaderStates[self.loaderState-1]
                            if self.loaderState >= self.loaderStates.count {
                                 self.loaderState = 1
                            } else {
                                self.loaderState += 1
                            }
                        }
                    }
    
                }
            }
        }
    
        var body: some View {
            HStack() {
                Spacer()
                Text("Loading:")
                Text(loaderMessage).onAppear { self.loaderState = 1 }
                Spacer()
            }
        }
    }
    

    set loaderState = 1 to start the loader

    set loaderState = 0 to stop the loader

提交回复
热议问题