iOS 14 Widgets:如何为每个widget尺寸系列创建不同的布局?
iOS 14 Widgets: How to create different layouts for every widget size family?
我想为每个小部件尺寸(即小、中、大)创建不同的布局。如何根据小部件的大小分支我的代码?
作为 WidgetKit
一部分的 WidgetFamily
(Apple Documentation) 枚举将允许您切换视图中的各种尺寸并进行相应调整。将其设置为 @Environment
变量并打开可用案例:
.systemSmall
.systemMedium
.systemLarge
struct WidgetView : View {
@Environment(\.widgetFamily) var family
@ViewBuilder
var body: some View {
switch family {
case .systemSmall:
Text("Small")
case .systemMedium:
Text("Medium")
case .systemLarge:
Text("Large")
default:
Text("Some other WidgetFamily in the future.")
}
}
}
除了已接受的答案之外,在您的 Provider class 方法(getTimeline、getSnapshot 和占位符)中,您会得到一个 context 具有 family 成员 var.
的对象
family 可以是三种小部件尺寸之一:.systemSmall、.systemMedium & .systemLarge
我想为每个小部件尺寸(即小、中、大)创建不同的布局。如何根据小部件的大小分支我的代码?
作为 WidgetKit
一部分的 WidgetFamily
(Apple Documentation) 枚举将允许您切换视图中的各种尺寸并进行相应调整。将其设置为 @Environment
变量并打开可用案例:
.systemSmall
.systemMedium
.systemLarge
struct WidgetView : View {
@Environment(\.widgetFamily) var family
@ViewBuilder
var body: some View {
switch family {
case .systemSmall:
Text("Small")
case .systemMedium:
Text("Medium")
case .systemLarge:
Text("Large")
default:
Text("Some other WidgetFamily in the future.")
}
}
}
除了已接受的答案之外,在您的 Provider class 方法(getTimeline、getSnapshot 和占位符)中,您会得到一个 context 具有 family 成员 var.
的对象family 可以是三种小部件尺寸之一:.systemSmall、.systemMedium & .systemLarge