gpt4 book ai didi

iOS 添加按钮到 WidgetKit 扩展

转载 作者:行者123 更新时间:2023-12-04 15:09:02 35 4
gpt4 key购买 nike

我目前正在为我的应用程序设计一个 WidgetKit ,基本上, WidgetKit 应该由三个按钮组成。到目前为止,我没有找到任何关于如何向 iOS Widget Extension 添加按钮的教程。我看到例如Google map 在其 WidgetKit 中使用按钮。
如何才能做到这一点?

最佳答案

Widgets 没有动画或自定义交互 ,但我们可以从我们的 widget 深层链接进入我们的应用程序。 systemSmall WidgetKit 是一个大的点击区域,而 systemMediumsystemLarge可以使用新的 SwiftUI link API在 WidgetKit 内创建可点击区域。
enter image description here

演示 ;使用 Link

  • 在您的 WidgetKit 扩展中。

  •     struct YourWidgetEntryView : View {
    var entry: Provider.Entry

    @Environment(\.widgetFamily) var family //<- here

    @ViewBuilder
    var body: some View {
    switch family {
    case .systemSmall:
    Text("Small") //.systemSmall widgets are one large tap area
    default:
    HStack{
    Link(destination: URL(string: "game:///link1")!, label: {
    Text("Link1")
    })
    Spacer()
    Link(destination: URL(string: "game:///link2")!, label: {
    Text("Link2")
    })
    Spacer()
    Link(destination: URL(string: "game:///link3")!, label: {
    Text("Link3")
    })
    }
    .padding()

    }
    }
    }

  • 在您的应用程序中

  • struct ContentView: View {

    @State var linkOne: Bool = false
    @State var linkTwo: Bool = false
    @State var linkThree: Bool = false

    var body: some View {
    NavigationView {
    List {
    NavigationLink(
    destination: Text("Link1-View"), isActive: $linkOne) {
    Text("Link1")
    }
    NavigationLink(
    destination: Text("Link2-View"), isActive: $linkTwo) {
    Text("Link2")
    }
    NavigationLink(
    destination: Text("Link3-View"), isActive: $linkThree) {
    Text("Link3")
    }
    }

    .navigationBarTitle("Links")
    .onOpenURL(perform: { (url) in
    self.linkOne = url == URL(string: "game:///link1")!
    self.linkTwo = url == URL(string: "game:///link2")!
    self.linkThree = url == URL(string: "game:///link3")!
    })
    }
    }
    }

    关于iOS 添加按钮到 WidgetKit 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65556274/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com