从 SwiftUI 中的应用程序 ContentView 访问小部件视图
Acess Widget View from app ContentView in SwiftUI
我想做的是在我的应用程序主屏幕上显示小部件视图,就像他们在此应用程序中所做的那样:
我试过从我的应用中调用 WidgetEntryView
,但它不起作用。
- 为您的
View
和 Entry
创建 单独的 文件:
struct SimpleEntry: TimelineEntry {
let date: Date
}
struct SimpleWidgetEntryView: View {
var entry: SimpleProvider.Entry
var body: some View {
Text(entry.date, style: .time)
}
}
- 将这些文件的目标成员设置为 应用程序和小部件。
仅 select 这两个文件很重要 - 确保您不会不小心将 @main
Widget / WidgetBundle 添加到 App 目标。
- 直接在 ContentView 中显示 Widget View:
struct ContentView: View {
var body: some View {
SimpleWidgetEntryView(entry: .init(date: Date()))
}
}
这是一个 GitHub repository 包含预览小部件的不同小部件示例。
我写了一个 view controller 来在 UIKit 应用程序中显示小部件。我构建它是为了自动执行屏幕截图,但您可以将其用作参考。
你可以看看它的样子here。
它支持所有小部件尺寸,虽然它没有确切的尺寸,但我认为它做得不错。
就像已经提到的那样,您还需要将一些小部件视图文件添加到您的应用程序目标中。
我想做的是在我的应用程序主屏幕上显示小部件视图,就像他们在此应用程序中所做的那样:
我试过从我的应用中调用 WidgetEntryView
,但它不起作用。
- 为您的
View
和Entry
创建 单独的 文件:
struct SimpleEntry: TimelineEntry {
let date: Date
}
struct SimpleWidgetEntryView: View {
var entry: SimpleProvider.Entry
var body: some View {
Text(entry.date, style: .time)
}
}
- 将这些文件的目标成员设置为 应用程序和小部件。
仅 select 这两个文件很重要 - 确保您不会不小心将 @main
Widget / WidgetBundle 添加到 App 目标。
- 直接在 ContentView 中显示 Widget View:
struct ContentView: View {
var body: some View {
SimpleWidgetEntryView(entry: .init(date: Date()))
}
}
这是一个 GitHub repository 包含预览小部件的不同小部件示例。
我写了一个 view controller 来在 UIKit 应用程序中显示小部件。我构建它是为了自动执行屏幕截图,但您可以将其用作参考。
你可以看看它的样子here。
它支持所有小部件尺寸,虽然它没有确切的尺寸,但我认为它做得不错。
就像已经提到的那样,您还需要将一些小部件视图文件添加到您的应用程序目标中。