在 SwiftUI 中,WidgetBundle 用于管理小部件的顺序。但是,您可以通过为每个小部件创建单独的小部件集合来手动控制它们的排序。
以下是一个示例,演示如何手动控制小部件的排序:
struct LargeWidget: Widget {
let kind: String = "LargeWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: LargeWidgetProvider()) { entry in
LargeWidgetView(entry: entry)
}
.supportedFamilies([.systemLarge])
.description(Text("A large widget."))
}
}
struct MediumWidget: Widget {
let kind: String = "MediumWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: MediumWidgetProvider()) { entry in
MediumWidgetView(entry: entry)
}
.supportedFamilies([.systemMedium])
.description(Text("A medium widget."))
}
}
struct SmallWidget: Widget {
let kind: String = "SmallWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: SmallWidgetProvider()) { entry in
SmallWidgetView(entry: entry)
}
.supportedFamilies([.systemSmall])
.description(Text("A small widget."))
}
}
let widgetOrder: [Widget] = [
SmallWidget(),
MediumWidget(),
LargeWidget()
]
struct SmallWidgetProvider: TimelineProvider {
let index: Int
init(index: Int = 0) {
self.index = index
}
func placeholder(in context: Context) -> SmallWidgetEntry {