当一个小部件打开一个应用程序时,应用程序是不是可以知道小部件的大小
Posted
技术标签:
【中文标题】当一个小部件打开一个应用程序时,应用程序是不是可以知道小部件的大小【英文标题】:When a widget opened an app, can the app knows the widget size当一个小部件打开一个应用程序时,应用程序是否可以知道小部件的大小 【发布时间】:2020-10-15 03:12:45 【问题描述】:当点击 ios 14 小部件时,它会打开应用:
var body: some View
Text(entry.text)
.widgetURL(WidgetEntryView.deeplinkURL)
应用能否获取打开它的小部件的大小(小、中、大)?
【问题讨论】:
【参考方案1】:您可以使用@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 和环境小部件。
【讨论】:
以上是关于当一个小部件打开一个应用程序时,应用程序是不是可以知道小部件的大小的主要内容,如果未能解决你的问题,请参考以下文章