【问题标题】: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)
}

应用能否获取打开它的小部件的大小(小、中、大)?

【问题讨论】:

    标签: swift swiftui widget ios14 widgetkit


    【解决方案1】:

    您可以使用@Environment(\.widgetFamily) 并将其传递给widgetURLLink

    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 和环境小部件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多