Виджеты iOS 14: как создать разные макеты для каждого размера виджетов?
Я хочу создать разные макеты для каждого размера виджета (то есть маленький, средний, большой). Как я могу разветвлять свой код в соответствии с размером виджета?
1 ответ
Решение
В WidgetFamily
(Документация Apple) перечисление как частьWidgetKit
позволит вам переключаться между различными размерами в вашем обзоре и соответствующим образом настраивать. Установите это как@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 (getTimeline, getSnapshot и placeholder) вы получаете объект контекста, который имеет член семейства var.
семейство может быть одного из трех размеров виджетов: .systemSmall,.systemMedium и.systemLarge.
Официальная документация Apple.