如何在 WatchOS 上复制天气

问题描述 投票:0回答:1

enter image description here enter image description here

Apple Watch 上的天气应用程序右上角有一个按钮,可以在条件、温度、降水等之间切换查看模式。这是什么样的 SwiftUI?这是带有按钮的自定义 UI 吗?

ChatGPT 告诉我使用 SegmentedPickerStyle,这在 WatchOS 中不可用

Picker("View", selection: $selectedView) {
    Text("Conditions").tag("Conditions")
    Text("Temperature").tag("Temperature")
    Text("Precipitation").tag("Precipitation")
}.pickerStyle(SegmentedPickerStyle())
swiftui watchos
1个回答
0
投票

我通过使用sheetForm中呈现的InlinePickerStyle()的组合,成功地接近了天气应用程序界面。

要显示按钮位置,您还需要将 tabView 嵌入到 NavigationStack 中。

这假设您正在以 watchOS 10 作为目标进行构建。

enum Tabs: String, CaseIterable, Identifiable {
    
    case one = "Cold"
    case two = "Warm"
    case three = "Hot"
    
    var id: Self { self }
}

struct ContentView: View {
    @State var selected = Tabs.one
    @State var sheetIsPresented = false
    
    var body: some View {
        NavigationStack {
            TabView(selection: $selected) {
                ForEach(Tabs.allCases) { item in
                    Text("\(item.rawValue) tab")
                }
            }
            .tabViewStyle(.verticalPage)
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        sheetIsPresented = true
                    } label: {
                        Image(systemName: "thermometer.medium")
                            
                    }
                    .foregroundStyle(.white)
                }
            }
        }
        .sheet(isPresented: $sheetIsPresented, content: {
            Form {
                Picker("View", selection: $selected) {
                    ForEach(Tabs.allCases) { item in
                        Text(item.rawValue)
                    }
                }
                .pickerStyle(InlinePickerStyle())
                .onChange(of: selected) {
                    sheetIsPresented = false
                }

          }
        })
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.