我目前正在为我的应用程序设计一个 WidgetKit ,基本上, WidgetKit 应该由三个按钮组成。到目前为止,我没有找到任何关于如何向 iOS Widget Extension 添加按钮的教程。我看到例如Google map 在其 WidgetKit 中使用按钮。
如何才能做到这一点?
最佳答案
Widgets
没有动画或自定义交互 ,但我们可以从我们的 widget
深层链接进入我们的应用程序。 systemSmall
WidgetKit 是一个大的点击区域,而 systemMedium
和 systemLarge
可以使用新的 SwiftUI link API
在 WidgetKit 内创建可点击区域。
演示 ;使用 Link
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/