【问题标题】:Acess Widget View from app ContentView in SwiftUI从 SwiftUI 中的应用 ContentView 访问 Widget View
【发布时间】:2020-09-24 22:13:50
【问题描述】:

我想在我的应用主屏幕上显示小部件视图,就像在这个应用中一样:

我尝试从我的应用程序中调用WidgetEntryView,但它不起作用。

【问题讨论】:

    标签: swift swiftui widgetkit


    【解决方案1】:
    1. 为您的ViewEntry 创建单独的 文件:
    struct SimpleEntry: TimelineEntry {
        let date: Date
    }
    
    struct SimpleWidgetEntryView: View {
        var entry: SimpleProvider.Entry
    
        var body: some View {
            Text(entry.date, style: .time)
        }
    }
    
    1. 将这些文件的目标成员身份设置为应用和小部件。

    只选择这两个文件很重要 - 确保不会意外将 @main Widget / WidgetBundle 添加到 App 目标。

    1. 直接在 ContentView 中显示 Widget View:
    struct ContentView: View {
         var body: some View {
            SimpleWidgetEntryView(entry: .init(date: Date()))
        }
    }
    

    这是一个GitHub repository,其中包含不同的小部件示例,包括预览小部件。

    【讨论】:

    • 设法让它工作!像魅力一样工作,非常感谢:)
    【解决方案2】:

    我写了一个view controller 来在 UIKit 应用程序中显示小部件。我构建它是为了自动化我的屏幕截图,但您可以将其用作参考。

    你可以看到它的样子here

    它支持所有小部件尺寸,虽然它没有确切的尺寸,但我认为它做得足够好。

    就像已经提到的那样,您还需要将一些小部件视图文件添加到您的应用目标中。

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多