SwiftUI中应用程序ContentView的Acess Widget View

问题描述

我要执行的操作就像在此应用程序中一样在我的应用程序主屏幕上显示小部件视图:

ColorWidgets App

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

解决方法

  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中显示窗口小部件视图:
struct ContentView: View {
     var body: some View {
        SimpleWidgetEntryView(entry: .init(date: Date()))
    }
}

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

,

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

您可以看到here的外观。

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

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