【发布时间】:2020-10-15 03:12:45
【问题描述】:
当点击 iOS 14 小部件时,它会打开应用:
var body: some View {
Text(entry.text)
.widgetURL(WidgetEntryView.deeplinkURL)
}
应用能否获取打开它的小部件的大小(小、中、大)?
【问题讨论】:
标签: swift swiftui widget ios14 widgetkit
当点击 iOS 14 小部件时,它会打开应用:
var body: some View {
Text(entry.text)
.widgetURL(WidgetEntryView.deeplinkURL)
}
应用能否获取打开它的小部件的大小(小、中、大)?
【问题讨论】:
标签: swift swiftui widget ios14 widgetkit
您可以使用@Environment(\.widgetFamily) 并将其传递给widgetURL 或Link:
struct Widget1EntryView: View {
@Environment(\.widgetFamily) var widgetFamily
var entry: Provider.Entry
var deeplinkURL: URL {
URL(string: "widget-deeplink://widgetFamily/\(widgetFamily)")!
}
var body: some View {
VStack {
Link("Tap me", destination: deeplinkURL)
Text("Widget family: \(String(describing: widgetFamily))")
.widgetURL(deeplinkURL)
}
}
}
然后检测在您的主应用中打开此 URL:
struct ContentView: View {
var body: some View {
Text("Test")
.onOpenURL { url in
print(url) // prints `widget-deeplink://widgetFamily/systemSmall`
print(url.lastPathComponent) // prints `systemSmall`
}
}
}
这是一个GitHub repository,其中包含不同的小部件示例,包括 DeepLink 和环境小部件。
【讨论】: